python多线程爬取链家房价数据(文末数据分享)
ArcGIS API for Javascript 4.X扩展heatmap.js实现热力图效果
假装有个标题
本次教程以深圳市为例,介绍利用python多线程爬取链家网的房价成交信息。其中涉及的知识包括爬虫框架Scrapy-spider、轻量数据库SQLite等。
01
知识背景
1.1 SQLite数据库
SQLite,是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它占用资源非常的低,操作简单,适合用于存储爬虫结果数据。
1.2 python多线程
多线程就像同时执行多个程序,多线程运行有如下优点:
- 使用线程可以把占据长时间的程序中的任务放到后台去处理。
- 运行速度更快
- 在一些等待的任务实现上如用户输入、文件读写和网络收发数据等情况下我们可以释放一些珍贵的资源如内存占用等等。
02
爬取流程详解
2.1 链家网数据源
首先进入链家网小区页面(https://sz.lianjia.com/xiaoqu/)
如图,网站分区显示了各个区的小区情况,我们可以通过该页面爬取数据的小区的列表,包括小区详情页面的链接等。
详细代码:
然后点击进入每一个小区的详情页面,就可以获取到小区的详细信息,主要包括均价、建成时间等,如图所示:
这里我们通过xiaoqu_spider_detail函数完成小区详细信息的爬取。
2.2 数据爬取结果
经过上述爬取数据的结果如下:
2.3 获取地理坐标
经过上述的爬取过程之后,可以看到,小区的房价信息都有了,但是缺少地理坐标信息,我们这里通过构建函数调用百度地图API,查询poi点位置信息,获取位置信息。
不过在开始爬取位置信息之前需要将数据库表格增加两列lat和lng,以便存储位置信息。这里手动命令行,用SQLite直接添加:
ALTER TABLE table_name ADD COLUMN lat double precision; ALTER TABLE table_name ADD COLUMN lng double precision;
附:爬取的坐标数据是百度地图坐标
爬取到的完整的数据结果,存储在SQLite数据库里面,通过python链接数据库读取出来,如下图所示:
2.4 数据可视化
经过数据清洗 去除没有房价信息的记录,将其导入到ArcGIS中,绘制在地图上,效果如下。
利用房价信息制作一个核密度分析图,如下图所示:
最后关注,转发,后台私信小编“01”即可获取源码,python免费学习资料。