位置: 编程技术 - 正文
推荐整理分享Python实现并行抓取整站40万条房价数据(可更换抓取城市)(并行 python),希望有所帮助,仅作参考,欢迎阅读内容。
文章相关热门搜索词:python 并行执行多个函数,并行 python,python并发执行shell,python并行编程手册,python 并行执行多个函数,python 并行执行多个函数,python并发和并行,python 并行执行多个函数,内容如对您有帮助,希望把文章链接给更多的朋友!
写在前面
这次的爬虫是关于房价信息的抓取,目的在于练习万以上的数据处理及整站式抓取。
数据量的提升最直观的感觉便是对函数逻辑要求的提高,针对Python的特性,谨慎的选择数据结构。以往小数据量的抓取,即使函数逻辑部分重复,I/O请求频率密集,循环套嵌过深,也不过是1~2s的差别,而随着数据规模的提高,这1~2s的差别就有可能扩展成为1~2h。
因此对于要抓取数据量较多的网站,可以从两方面着手降低抓取信息的时间成本。
1)优化函数逻辑,选择适当的数据结构,符合Pythonic的编程习惯。例如,字符串的合并,使用join()要比“+”节省内存空间。
2)依据I/O密集与CPU密集,选择多线程、多进程并行的执行方式,提高执行效率。
一、获取索引
包装请求request,设置超时timeout
一级位置:区域信息
二级位置:板块信息(根据区域位置得到板块信息,以key_value对的形式存储在dict中)
以dict方式存储,可以快速的查询到所要查找的目标。-> {'朝阳':{'工体','安贞','健翔桥'......}}
三级位置:地铁信息(搜索地铁周边房源信息)
将所属位置地铁信息,添加至dict中。 -> {'朝阳':{'工体':{'5号线','号线' , '号线'},'安贞','健翔桥'......}}
对应的url: {'朝阳':{'工体':{'5号线'}}}
参数:
—— r-朝阳
—— b-工体
—— w-5号线
组装参数: '板块', '地铁', '标题', '位置', '平米', '户型', '楼层', '总价', '单位平米价格']
四、分配任务,并行抓取
对任务列表进行分片,设置进程池,并行抓取。
通过设置进程池并行抓取,时间缩短为单进程抓取时间的3/1,总计时间3h。
电脑为4核,经过测试,任务数为3时,在当前电脑运行效率最高。
五、将抓取结果存储到excel中,等待可视化数据化处理
附上源码
总结:
当抓取数据规模越大,对程序逻辑要求就愈严谨,对python语法要求就越熟练。如何写出更加pythonic的语法,也需要不断学习掌握的。
标签: 并行 python
本文链接地址:https://www.jiuchutong.com/biancheng/382436.html 转载请保留说明!友情链接: 武汉网站建设