前言
互联网时代,如何更好地利用信息是一个非常重要的事情。信息的利用可以拆解为下面这些行为:获取、加工、存储、搜索、使用、泛化。 今天我将从结构化信息的获取、存储、搜索、使用这四个方面来讲一讲,如何通过构建个人结构化数据中心来更好地利用信息。
北京房价的分析在第三章节,对实现方案与架构不兴趣的同学可以直接拉到第三章。
一、概览
图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 ,帐号密码分别是:user和password。
- 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)是一个跨平台信息操作系统,通过它,我们可以更好的利用互联网时代的信息。