整站40万条房价数据并行抓取,可更换抓取城市

这次的爬虫是关于房价信息的抓取,目的在于练习10万以上的数据处理及整站式抓取。

数据量的提升最直观的感觉便是对函数逻辑要求的提高,针对Python的特性,谨慎的选择数据结构。以往小数据量的抓取,即使函数逻辑部分重复,I/O请求频率密集,循环套嵌过深,也不过是1~2s的差别,而随着数据规模的提高,这1~2s的差别就有可能扩展成为1~2h。

因此对于要抓取数据量较多的网站,可以从两方面着手降低抓取信息的时间成本。

1)优化函数逻辑,选择适当的数据结构,符合Pythonic的编程习惯。例如,字符串的合并,使用join()要比“+”节省内存空间。

2)依据I/O密集与CPU密集,选择多线程、多进程并行的执行方式,提高执行效率。

一、获取索引

包装请求request,设置超时timeout

一级位置:区域信息

二级位置:板块信息(根据区域位置得到板块信息,以key_value对的形式存储在dict中)

以dict方式存储,可以快速的查询到所要查找的目标。-> {'朝阳':{'工体','安贞','健翔桥'......}}

三级位置:地铁信息(搜索地铁周边房源信息)

将所属位置地铁信息,添加至dict中。 -> {'朝阳':{'工体':{'5号线','10号线' , '13号线'},'安贞','健翔桥'......}}

对应的url:http://bj.fangjia.com/ershoufang/--r-%E6%9C%9D%E9%98%B3%7Cw-5%E5%8F%B7%E7%BA%BF%7Cb-%E6%83%A0%E6%96%B0%E8%A5%BF%E8%A1%97

解码后的url:http://bj.fangjia.com/ershoufang/--r-朝阳|w-5号线|b-惠新西街

根据url的参数模式,可以有两种方式获取目的url:

1)根据索引路径获得目的url

2)根据dict信息包装url

{'朝阳':{'工体':{'5号线'}}}

参数:

——  r-朝阳

——  b-工体

——  w-5号线

组装参数:http://bj.fangjia.com/ershoufang/--r-朝阳|w-5号线|b-工体

二、获取索引页最大页数

三、抓取房源信息Tag

这是我们要抓取的Tag:

['区域', '板块', '地铁', '标题', '位置', '平米', '户型', '楼层', '总价', '单位平米价格']

四、分配任务,并行抓取

对任务列表进行分片,设置进程池,并行抓取。

通过设置进程池并行抓取,时间缩短为单进程抓取时间的3/1,总计时间3h。

电脑为4核,经过测试,任务数为3时,在当前电脑运行效率最高。

五、将抓取结果存储到excel中,等待可视化数据化处理

原文:http://www.cnblogs.com/Lands--ljk/p/5467236.html

原文发布于微信公众号 - 大数据挖掘DT数据分析(datadw)

原文发表时间:2016-07-01

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏我是攻城师

如何使用Pig集成分词器来统计新闻词频?

2575
来自专栏Java架构

Java程序员从京东、阿里、携程面试回来,已成功拿到京东offer

1915
来自专栏CSDN技术头条

【BDTC 2015】数据库分论坛:GBase 8t、PosgreSQL-X2核心技术解析

2015年12月10-12日,由中国计算机学会(CCF)主办,CCF大数据专家委员会承办,中国科学院计算技术研究所、北京中科天玑科技有限公司与CSDN共同协办,...

2066
来自专栏自然语言处理

微博话题爬取与存储分析(下)

本文基于python以新浪微博为数据平台,从数据采集、关键字提取、数据存储三个角度,用最简单的策略来挖掘我们的“黄金”。

762
来自专栏钱塘大数据

“别再问我什么是大数据了”一个单身程序汪的自白

N次聚会,N种人问我:“哎!你们做大数据的到底是做什么的呀?”每每到此,我都会回答他们:大数据只是一种工具,没有那么神秘,和一支铅笔,一双筷子,一把钥匙的原理是...

3049
来自专栏我是攻城师

DB-Engines 2016年3月数据库排名:Redis成功超越SQLite

3325
来自专栏牛客网

有赞三面面经

9月底电话面试,国庆后现场面,前段时间发的offer,分享一下面试时问的问题。 一面 电话面 1、一个类被加载到JVM,发生了什么 2、GC的判定 3、GC标记...

5397
来自专栏灯塔大数据

这有一份技术指南,如何用大数据分析图表

导读:上一期学习了软体机器人的相关介绍,今天我们来了解一下使用大数据进行图表分析的相关技能(文末更多往期译文推荐) 图表是最流行的计算机科学概念之一。他们已被...

3356
来自专栏企鹅号快讯

产品经理必备技能:写SQL

在我们这行,有一个经典的问题:产品经理要不要懂技术? 我的观点是,产品经理懂技术,就像流氓会武术,谁都挡不住。懂技术,进可攻退可守,艺多不压身,当然是多多益善。...

2240
来自专栏编程

重复性的操作,你干不过计算机

最近,不管打开哪个技术网站,都能够看到大家在讨论有关人工智能的话题,这也使得很多程序员在考虑是不是要回炉重造去学习人工智能的知识,同时也使得Python在编程语...

1758

扫码关注云+社区