second-hand-house-spider

第一个爬虫程序,爬了链家网的二手房信息。

作为刚入门的小白,最好的学习方式就是拿一个项目练手,所以就想到了搜集一下二手房信息。主要是因为房子信息比较敏感,因为屌丝们不是在当房奴,就是在当房奴的路上,要么就是当不起房奴。。。好了,不扯淡了,三天时间,边看《Python网络爬虫与信息提取》的视频,边学用typora写了个学习笔记,边敲了代码。传统行业从业,不是专业程序员,大神轻拍。。。

链家网url结构分析:

获得城市子域名代码,进入http://<city>.lianjia.com,例如sh-上海,bj-北京

  • 以小区为爬取目标:
    • 获得该城市的小区栏目页面,http://<city>.lianjia.com/xiaoqu/pg<n>/
    • 获得该城市的各区县页面,http://<city>.lianjia.com/xiaoqu/<district>/pg<n>/
    • 获得该区县的各板块页面,http://<city>.lianjia.com/xiaoqu/<area>/pg<n>/
  • 以行政区为爬取目标:
    • 获得该城市的二手房栏目页面,https://<city>.lianjia.com/ershoufang/pg<n>/
    • 获得该城市某区二手房栏目页面,https://<city>.lianjia.com/ershoufang/<district>/pg<n>/

这次仅仅用来爬取二手房信息并生成关注度的热力图,由于链家每个栏目最多显示100页信息,为了更多的了解相关城区的二手房信息,按行政区爬取。

以宇宙第一首都北京市为例:https://bj.lianjia.com/ershoufang/<district>/

  • <district>:为北京的行政区,为了方便爬取,建一个行政区字典:

    1
    bjdistricts ={'东城区':'dongcheng','西城区':'xicheng','朝阳区':'chaoyang','海淀区':'haidian','丰台区':'fengtai','石景山区':'shijingshan','通州区':'tongzhou','昌平区':'changping','大兴区':'daxing','亦庄开发区':'yizhuangkaifaqu','顺义区':'shunyi','房山区':'fangshan','门头沟区':'mentougou','平谷区':'pinggu','怀柔区':'huairou','密云区':'miyun','延庆区':'yanqing','燕郊':'yanjiao','香河':'xianghe'}
  • pg<n>:为页数,依据相关行政区获取,没有抓取这个信息,点开网站看一眼就可以,东城与西城不到100,海淀和朝阳这样的大区都超过了100页,所以最大是100。

具体实现:

  • 使用requests来访问链家网页面信息

  • 使用beautifulsoup和lxml库解析页面信息

  • 使用re库提取信息,包括:

['小区编号','房屋编号','小区名','户型','面积(m2)','朝向','装修','楼层','年代','区位','总价(万)','均价(元/m2)','关注(人)','带看(次)','坐标']

1

  • 使用百度地图API获取坐标信息(需提前申请API调用的key,填入ak处)

2

  • 将信息存入CSV以备后续分析(不会数据库。。😭)

3

  • 百度地图(没学过网页的相关知识,就是边学边弄):

用了百度的模板,添加了行政区域边界,和不同风格的模板,就是玩玩,还挺有意思。

遇到的问题

  • 坐标反馈错误,一开始只用小区信息提交给baidu,发现反馈的数据很多出了北京市,还有返回广东的坐标,后面将提教信息完善,补充了成北京 朝阳区 双井 富力城这样的格式,返回的坐标基本没有问题,但是也有部分跨区的。
  • 正则提取房屋信息时,户型以为都时x室x厅,后面发现还有x房间x卫这样的格式,这些问题基本就是遇到了再解决。
  • 热力图生成用了关注人数和带看人数的加权平均,发现关注人数很多,但是带看很少,我认为关注人数更加能反应关注度,这个信息是购房者主动释放的,而带看是链家工作人员录入的。
  • 由于没有考虑太多异常处理,不调用百度API时,基本没出过什么错,但是调用API时偶尔会出错,查了一下,也不是API哪里的问题,在提取页面后面加了个print()想看输出了什么,就没出错了,没搞清楚…

生成的热力图:

调整了一下地图样式

4

5

6

最后来一张四区的集合图,北京真(tm)大:

1526450752709

关于信息的提取还是很有必要的,比如,我之前一直在西二环某传统行业工作,西二环房价那是杠杠的贵,那时一直感觉西南二环好偏僻,直到17年有一天,西南二环某盘从五万,半年直接翻了一倍,才发现还是自己太无知….最后还是那句:侠之大者,为国接盘。