基于python的二手房数据爬取及分析
2019-09-24赵绿草饶佳冬
赵绿草 饶佳冬
摘要:随着海量数据的出现,如何快速有效的获取到我们想要的数据成为难题。以房源信息为例,该文使用Python语言结合Scrapy分布式爬虫来对房源信息网——链家网上在售二手房数据进行爬取,解读武汉市的二手数据背后隐藏的房源趋势。
关键词:Scrapy;爬虫;Python;可视化分析
中图分类号:TP391 文献标识码:A
文章编号:1009-3044(2019)19-0001-03
1 背景
近年来,大数据、互联网和云计算等技术发展迅速,“智慧城市”建设进程加快,越来越多的实物用数据代为表示,用数据来反映问题成为一种直观又具有说服力的方式。如今,大部分地区已进入城市化进程,人口的众多与住房用地的减少使得房价大涨,如何找到合适的住房已成为常见的民生难题。
互联网为用户提供了各种房源数据,在爬虫的爬取下集中有用的数据,并对这些数据进行清洗、统计和可视化分析,可以为用户挖掘出隐藏在网络数据中的所有房源的分布情况以及价格等特征走向,帮助用户做出更好的决策。
2 Scrapy分布式爬虫
Scrapy是一种用于抓取网站和提取结构化数据的应用程序框架,可广泛应用于信息处理,数据挖掘或历史存档。最初Scrapy是为网络抓取而设计的,但它也可以用于使用API或者作为通用网络爬虫來提取数据[1]。
Scrapy是基于Twisted异步网络库来处理通讯, 架构清晰, 并且包含了各种中间件接口, 可以灵活的完成各种需求。其工作原理为:首先从首页URL开始, 调度器会传给下载器进行下载, 之后会交给爬虫进行分析, 根据分析结果进行不同处理。如果是需要进一步爬取的链接, 这些链接会传回调度器;如果是需要保存的数据, 则被送到项目管道组件进行后期处理, 包括详细分析、过滤、存储等。此外, 在数据流动的通道里还允许安装各种中间件, 进行必要的处理[1]。
3 Scrapy爬取及数据清洗
3.1 Scrapy爬取数据
打开cmd命令窗口,在常用文件夹下建立新的Scrapy爬虫工程,设置爬取首页和爬虫名称,便有了一个spiders文件夹及其目录结构,使用配置有python3.6的pycharm打开我们所建立的爬虫工程开始正式编写爬虫。
然后转到爬虫模块,定位房源字段信息,在parse()方法中对这些信息的源代码进行复制解析,利用for循环从第一页开始进行翻页,回调parse()方法,对每一页的信息进行同样的提取,直到最后一页。最后数据爬取完成,转到管道模块,将爬取的全网二手房数据转换为json纯文本写入到csv文件存储。
3.2 数据清洗
数据清洗是对所爬取的数据进行规范化操作,将数据中多余的符号及字符做删除或者替换处理,并且通过使用正则表达式等工具对数据进行一致性处理的过程。由于爬取出来的数据很乱,有各种换行符,制表符以及空格隐藏在数据中,或者是字段出现错位,存在缺失值异常值等情况,因此需要先将数据进行清洗补充缺失数据等数据处理再进行探索分析。
首先用split()和drop()方法将含有多条信息的一列分成多列,pandas.concat()合并数据。然后通过正则表达式处理数据中影响分析的字符,re.sub()删除指定字符,re.findall()提取指定字符。最后删掉不必要的数据,将一些不规范的数据替换掉,例如年份一列中有“未知”字段,属于字符型,为了便于后续分析,我们将“未知”两个字替换为整型。
4 数据可视化分析
4.1 简单概括性分析
数据初步清洗完毕,进行分析之前先检查一下数据缺失情况,如果数据缺失严重,需要对缺失值进行填补或者其他处理,否则会影响数据分析结果准确性。检查结果如图3,从图中可以看出数据没有严重缺失,再对数据做描述性统计分析如图4,可以看出武汉市二手房的价格均值约为212.6万,平均面积102.8平方米,两者相除得出的每平米均价约2万多,与统计结果中每平米单价的均价基本一致,说明该数据异常值不明显,可以进行数据可视化。
4.2 可视化分析
数据可视化技术将数据转换成图形图表, 为决策提供依据[2]。数据可视化技术的研究已得到了快速发展并取得相应的成就[3]。
对武汉市每个区域二手房数量进行分析并且分析每个区域二手房每平米单价均值和总价箱形图,可视化结果分别如图5和6。
从图5可以观察到武汉洪山区二手房数量最多,远远高于其他区域,但是房屋每平米价格却不是最高的,武昌区二手房每平米单价均值最高,可能是因为武昌属于中心位置,同时占据交通和经济两大优势。另外,通过6的箱型图结果可以得出,武汉各区房屋总价中位数都在300万以下,而且房屋总价分布趋势比较分散,最高的是洪山区,房屋总价达到了1400万,最低的不到100万,说明房屋价格特征不是理想的正太分布。
通过distplot和kdeplot绘制柱状图并给出标准拟合正态分布,观察武汉市二手房面积分布情况如图7,可以看出房子面积分布与标准正态分布大部分拟合,说明我们观测的大部分二手房面积在正常范围之内,面积90平米左右的二手房最多,还有一些面积大于200平米超出正常范围的二手房。再以有无电梯为分类依据绘制面积和价格之间的散点图,如图8,发现整体上面积特征基本与价格呈现线性关系,同样面积的二手房有电梯比无电梯价格高,符合基本常识,面积越大,有电梯,价格越高。
5 总结
随着信息技术越来越成熟,如何使用爬虫和数据可视化等技术更好地了解用户以及他们的意向是WEB2.0时代的关键领域。本文通过研究如何从互联网上采集相关数据,让数据采集更高效,把采集到的数据进行清洗、过滤,将有用的数据进行统计和可视化分析,从中分析和挖掘出有价值的信息[4],充分利用大数据潜在的价值。
参考文献:
[1] 晋振杰, 曹少中, 项宏峰, 等. 基于python的电商书籍数据爬虫研究[J]. 北京印刷学院学报, 2018, 3(26): 39-42.
[2] 曾悠. 大数据时代背景下的数据可视化概念研究[D]. 杭州: 浙江大学, 2014.
[3] 任磊, 杜一, 马帅, 等. 大数据可视分析综述[J]. 软件学报, 2014, 25(9): 1909-1936.
[4] 肖乐, 丛天伟, 严卫. 基于python的Web大数据采集和数据分析[J]. 电脑知识与技术, 2018, 14(22): 9-11.
【通联编辑:谢媛媛】