如何一键抓取全国二手房和租房数据? (全部源码)

最近又要租房了,哪里的性价比更高?买房却不知道全国市场的趋势如何?程序员自有办法,抓取网络的房产交易和租房数据来分析啊!

用Python写起来麻烦,用商业软件速度慢还收费,开源的图形化爬虫Hawk,已经在其任务市场里内置了全国链家和我爱我家的工程任务。一键即可加载市场任务,一键在全国几十个城市之间切换,还能一键导出数据到Excel,txt等各种文本类型,心动了么?

Hawk,由沙漠之鹰历时五年个人业余时间开发 ,从2015年开发至今,已经经历三个版本,但是Hawk5则带来了其历史上最大的一次更新,并提供了社区化的任务市场,多国语言和更强大的调试系统。

本文将手把手地让您通过Hawk无需编程地抓取全部房产数据,并从中了解Hawk的设计思想和原理。如果你已经是Hawk的用户,可以通过本文了解Hawk5的最新功能。

本文面向程序猿同学,一些常识不再介绍,之后会对源代码进行讲解。更多的细节可参考使用文档,有包含Hawk方方面面的信息。

GitHub主页:https://github.com/ferventdesert/Hawk

使用文档: https://ferventdesert.github.io/Hawk/

下载地址: https://github.com/ferventdesert/Hawk/releases

国内下载地址: https://gitee.com/deserthawk/Hawk/attach_files

启动Hawk

Hawk是绿色软件,下载后双击Hawk.exe直接启动,可能依赖于.Net Framework 4.5,系统提示时可自行下载安装。

启动后,在欢迎页面有三个tab页: 新建任务,任务市场和参数设置。欢迎页面非常重要,能够新建任务,或者浏览相关文档和帮助。

front.gif

但本教程不介绍如何设计任务。我们直接使用现有的任务市场。切换到任务市场,Hawk会访问远程git仓库拉取任务列表(这可能需要一些时间)。

稍等片刻Hawk即可将远程任务预览出来。 其中包括教学工程,搜狐新闻等示例。

任务市场

左侧选择链家全国地产,该工程包括了抓取全国的二手房,新房,小区,租房信息,

在左侧工程列表上点击右键加载,即可加载链家的整个任务。(当然也可以在右侧任务列表上加载单个任务,Hawk只会加载它和它依赖的任务列表)。

查看抓取结果

在Hawk主界面右侧是当前的状态,包括三个区域:

已加载任务

数据管理:可显示生成的或从文件中导出的表

工作线程视图:正在执行的任务都会显示在这里

在“已加载任务”中,双击任一栏目(此处我们选择链家在售),Hawk就会在后台执行实时抓取和计算,并将最终抓取结果预览在当前页面中,默认显示的是北京的二手房信息。如果你希望预览更多条数据,修改下方调试框的采样量,点击刷新即可。

是不是很方便?如何在多个城市间切换?如何将数据导出?不要着急,我们先讲解Hawk是如何工作的。

Hawk是如何工作的?

还是以链家的二手房列表为例,链家的页面:

https://bj.lianjia.com/ershoufang

每页有30条数据,但一个城市最多只能显示100页。通过拼接URL最多也只能生成3000条数据。但是我们获取每个区县(如东城区,西城区)的地址,再通过每个区县获取其每个区域(如金融街,平安里)的地址和二手房数量,这样每个区域的数量就不超过3000条了,我们利用类目组合绕过100页的抓取限制,进而能获取当前城市全部的信息。

链家页面

Hawk是通过多个模块组合而成的工作流系统,左侧显示了当前任务所需的所有步骤模块,点击任意步骤,Hawk就会跳到该步并预览结果,双击该模块,就能查看模块的配置。

Hawk数据清洗

在下方的调试栏中,还可以勾选“调试详情”,通过点击上一步和下一步,可单步调试,在下方的调试输出框中会显示当前模块的作用和参数。

如何保存全部数据

刚才是预览模式,为了保存全部数据,我们已经在模块列表的最下方拖入了写入数据表。其表名填的是链家北京二手房。

在数据清洗左侧的下方(保持默认参数,串行模式,延时值1000毫秒,否则会被封禁)点击执行即可,Hawk会自动分配线程池,开始抓取信息。

执行线程

抓取完毕后(大概需要50分钟),如果你想取消任务,在右下角的“线程管理器”上,在“链家在售串行任务”上点击右键,并点取消即可。

run.gif

最后,在导出的数据表上,右键点击另存为,导出到Excel即可。

获取租房信息?

很简单,点击任务列表中的链家租房即可。 其他操作和链家二手房是一致的。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zygsgx.html