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

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

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

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

本文将手把手地让您经过Hawk无需编程地抓取所有房产数据,并从中了解Hawk的设计思想和原理。若是你已是Hawk的用户,能够经过本文了解Hawk5的最新功能。web

本文面向程序猿同窗,一些常识再也不介绍,以后会对源代码进行讲解。更多的细节可参考使用文档,有包含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

image.png

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

链家页面

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

Hawk数据清洗

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

如何保存所有数据

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

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

执行线程

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

run.gif

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

获取租房信息?

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

你会发现,几乎全部的任务都依赖于一个“底层通用任务”,它抽象了二手房,租房,小区,新房的公共部分。Hawk使用子任务实现任务间的互相调用。这样可极大地节省设计所需的时间。

在不一样的城市间切换?

沙漠君我不是北京的,我想看其余城市的!

咱们回到Hawk首页,点击任务市场的参数设置。以下图:

左侧展现了当前系统全局的配置, 包括总的web请求数量等,右侧是当前工程的全局设置。 程序猿朋友们都知道,这就是全局参数嘛。咱们在参数组选择的下拉菜单中,选择不一样的城市,回到以前的数据清洗界面再次刷新,就会发现城市发生变化了!

这就是Hawk的全局参数配置系统,它经过yaml文件描述了一些键值对。在任务中,经过大括号,可以随时引用全局参数中配置的信息。例如,你能够在"底层通用任务"的第一个模块“从文本生成”中看到{city},它表明读取全局配置中city的值。

param.gif

你也想设计这样的任务?

哈哈,我猜到了!Hawk内置了强大的文档系统。每一个模块都有详细的使用介绍,并能在新手模式间切换。同时还可以自动生成帮助文档,在任何一个数据清洗的任务中,点击调试工具栏中的“问号”按钮,便可弹出当前任务手把手的教程,你只要按照他的步骤一步步操做便可!

doc.gif

除了直接看自动生成的帮助文档。能够阅读Hawk的教程,快速教程中提供了使用的简要说明,帮助你快速上手。而示例教程中,给出了几个经典例子的步骤。

结语

Hawk有太多强大的特性能够去讲,例如强大的手气不错功能和超级模式,但本文旨在介绍Hawk5更新的功能。若是你感兴趣,欢迎给本项目的GitHub点个star,并欢迎持续关注沙漠君的博客。若是你愿意给Hawk作出贡献,欢迎联系我!

公众号二维码

相关文章
相关标签/搜索