爆肝代码两个月,我发现了北京房价的“小秘密”

2022-09-21 15:10:39 浏览数 (1)

前言

互联网时代,如何更好地利用信息是一个非常重要的事情。信息的利用可以拆解为下面这些行为:获取、加工、存储、搜索、使用、泛化。 今天我将从结构化信息的获取、存储、搜索、使用这四个方面来讲一讲,如何通过构建个人结构化数据中心来更好地利用信息。

北京房价的分析在第三章节,对实现方案与架构不兴趣的同学可以直接拉到第三章。

一、概览

图1: 结构化数据中心-概念

先介绍一下个人结构化数据中心的整体概念。如图1:

  • 1.首先互联网中存在着大量的数据,这些数据以网站的形式存在着,我们可以通过浏览网站获取信息,但是这样的行为效率很低。所以我们需要将网站的非结构化数据,转化为结构化数据。此时爬虫作为一个工具能够帮助我们转化数据,这个行为被我们定义为信息的获取
  • 2.获取了大量的结构化数据之后,我们需要有个东西将这些东西存储起来,所以此时需一个数据存储中心来将这些数据持久化,以备后续使用,这个行为被我们定义为信息的存储
  • 3.当本地存储了大量的结构化数据之后,由数据存储中心提供的API服务,我们可以通过数据查询终端来查询某些单个信息,这个行为被我们定义为信息的搜索
  • 4.同时我们也可以在数据分析/可视化平台上,对数据进行分析,得出数据冰山下隐藏的信息,这个行为被我们定义为信息的使用

此时一个对信息进行获取、存储、搜索、使用的系统就诞生了,我称其为个人结构化数据中心

二、架构、部署与使用

1.整体介绍

图2:结构化数据中心-技术

在来看一下系统的整体结构,如图2:

  • 1.爬虫我们使用Pyspider,它能够让我们迅速上手数据爬取。
  • 2.数据中心我们使用ParseServer,在其部署的时候会附带一个MongoDB。
  • 3.因为Pyspider和ParseServer缺少定时任务的机制,所以我们引入了N8N,它提供了一个Web网站,让我们能够制作一些定时任务调用一些接口。
  • 4.同时Selenium作为Web自动化工具,能够帮助我们结合N8N进行Web页面的定时操作,解决Pyspider无法精细化调度的问题。
  • 5.MetaBase则是作为数据可视化平台,让我们能够迅速对大量数据进行可视化分析。
  • 6.最后我们可以通过APP/网站/小程序等等终端,调用ParseServer提供的API服务,让更多用户查询到自己需要的数据。

以上使用到的各个系统都是开源,接下来我将一一介绍这些系统的部署,最终构造出一个完整的:个人结构化数据中心

2.部署

部署指导视频

(1).前提
  • 系统中需要安装 Docker 和 Docker-Compose。
  • 以下部署需要在 Linux 或者 Mac 上进行。
(2).部署
  • 首先需要点击这里,将项目 clone 到本地,例如:~/struct-data-center-init
  • 修改文件 ~/struct-data-center-init/ParseServer/docker-compose.yml 文件:
    • 如果是本地部署:那么只需要将里面 192.168.31.134 改成本机ip。
    • 如果是云服务器部署:那么需要将里面 192.168.31.134 和 localhost 都改成本机ip。
  • 可以点击这里,将所有镜像下载到项目目录里(注意别把镜像文件的名字改了),然后执行 sudo sh import.sh 导入镜像。
  • 进入项目,执行 sudo sh run.sh 等待所有容器部署完毕。注意执行这一步的时候禁止翻墙。
(3).配置
  • 通过访问下面的页面,确认各容器部署成功:云服务器需要在防火墙设置里打开端口:5001/5002/5011/5012/5013/5014/5021/5031/5032
    • Pyspider(爬虫):http://localhost:5002 或者 http://yourip:5002
    • ParseServer-Dashboard(低代码后端平台):http://localhost:5014 或者 http://yourip:5014 ,帐号密码分别是:userpassword
    • MetaBase(数据可视化平台):http://localhost:5011 或者 http://yourip:5011。
    • N8N(定时任务平台):http://localhost:5021 或者 http://yourip:5021,帐号密码分别是:1Test@gmail.com 和 1Test@gmail.com。
    • Selenium(WEB自动化工具):
      • 节点管理:http://localhost:5031 或者 http://yourip:5031
      • 浏览器访问:http://localhost:5032 或者 http://yourip:5032,密码是 secret
  • 在使用前还需要进行两个配置:
    • Pyspider:访问爬虫页面,将三个爬虫代码中的localhost改成你的ip。修改完毕之后,回到主页面把三个任务的 status 改成RUNNING
    • MetaBase:访问数据可视化平台,然后进行下面的操作:
      • 点击:让我们开始吧
      • 首选语言:Chinese
      • 输入:姓名/邮箱/团队名称/密码
      • 添加您的数据:
        • 选择 MongoDB
        • 显示名称:HouseInfo
        • Host:本机ip
        • Database name:dev
        • Port:5013
        • Username/Password 以及后面的都空着,不需要修改
      • 点击完成,进入MetaBase首页

3.使用

  • 访问 Pyspider 页面
    • 我们可以看见内置了三个任务:
      • beike_xinshuju_paqu: 用于初始化爬取贝壳上面的房价数据,每天更新新的房价数据。
      • beike_jiancha_kongshuju: 用于每天检查更新的房价数据是否有问题。
      • beike_chengjiao: 用于每隔一天,检查已有的房产是否下架或者成交。
    • 我们将可以点击 Run 按钮,执行爬虫。爬下来的数据会被存储到 ParseServer 里面。
    • 点击这里,可以了解到 Pyspider 的一些常用知识。
  • 访问 ParseServer-Dashboard 页面,输入帐号密码后
    • 左边有个 HouseInfo 数据表,数据表中已经提前存储了某一天北京的房价数据
    • 爬虫新爬取的数据都会被展示在这里面
  • 访问 MetaBase 页面
    • 主页点开侧边栏,点击浏览数据,可以看见我们房价数据库:HouseInfo
    • 点击我们的数据库,会发现里面有一个名为 HouseInfo 的表,我们将鼠标放在这个表上,表的右边会出现一个闪电的标识。
    • 点击闪电标识,我们就能看见这个表的一些简单的统计数据,例如目前北京有多少房屋在售等等。点击这里,可以了解到 MetaBase 的一些常用知识。
    • 至此我们的结构化数据中心就形成了闭环,我们可以使用 MetaBase 进行房价数据的分析了

三、分析北京房价

过去的两个月,通过每天的定时任务,我积累了北京每个城区/板块/小区/房子天级别的价格数据与各种基础信息,所以我们可以通过MetaBase做一些比较有意思的数据分析。下面我展示一些我定制的看版。

(1).北京房价整体趋势

图3:北京房价整体趋势

通过这张图,我们可以发现,北京这两个月以来挂牌均价在持续上涨,但是总价却比较稳定。这个现象可能可以说明:北京近两个月上架的小户型房子比较多,导致均价在不断上涨。

(2).北京城区价格图

图4:北京城区价格图

这张图中表现的是北京房子的挂牌均价,颜色越深表示价格越高,所以我们可以发现:北京的房价确实遵从越往中心越贵的道理。

(3).北京板块价格

图5:北京板块价格

这张图中表现的是北京均价最高与最低的八大板块,我们可以发现:最贵的板块都集中在东西城,最便宜的板块都集中在房山/密云

(4).北京小区价格

图6:北京小区价格

这张图中表现的是北京均价最高与最低的八大小区,我们可以发现:北京均价最高与均价最低的小区差距非常大,北京竟然也有均价1-2w的房子

(5).回龙观板块均价最高的小区

图7:国风美唐价格

通过数据分析,我找到了回龙观板块均价最高的小区首开国风美唐三期。上图是该小区最近两个月的价格情况,该小区房价在持续上涨,我们可以发现:房市的追涨逻辑还是有道理的。

四、结语

本片文章是《计算脑》系列文章的第四篇,教你如何构建个人结构化数据中心。关注我,让我通过技术带你成为超人

什么是计算脑?

计算脑

计算脑(Computrain)是一个跨平台信息操作系统,通过它,我们可以更好的利用互联网时代的信息。

0 人点赞