基于python的二手房数据爬取及分析
作者:赵绿草 饶佳冬
来源:《电脑知识与技术》2019年第19期
        摘要:随着海量数据的出现,如何快速有效的获取到我们想要的数据成为难题。以房源信息为例,该文使用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爬取及数据清洗
scrapy分布式爬虫
        3.1 Scrapy爬取数据
        打开cmd命令窗口,在常用文件夹下建立新的Scrapy爬虫工程,设置爬取首页和爬虫名称,便有了一个spiders文件夹及其目录结构,使用配置有python3.6的pycharm打开我们所建立的爬虫工程开始正式编写爬虫。
        然后转到爬虫模块,定位房源字段信息,在parse()方法中对这些信息的源代码进行复制解析,利用for循环从第一页开始进行翻页,回调parse()方法,对每一页的信息进行同样的提取,直到最后一页。最后数据爬取完成,转到管道模块,将爬取的全网二手房数据转换为json纯文本写入到csv文件存储。
        3.2 数据清洗
        数据清洗是对所爬取的数据进行规范化操作,将数据中多余的符号及字符做删除或者替换处理,并且通过使用正则表达式等工具对数据进行一致性处理的过程。由于爬取出来的数据很乱,有各种换行符,制表符以及空格隐藏在数据中,或者是字段出现错位,存在缺失值异常值等情况,因此需要先将数据进行清洗补充缺失数据等数据处理再进行探索分析。
        首先用split()和drop()方法将含有多条信息的一列分成多列,at()合并数据。然后通过正则表达式处理数据中影响分析的字符,re.sub()删除指定字符,re.findall()提取指定字符。最后删掉不必要的数据,将一些不规范的数据替换掉,例如年份一列中有“未知”字段,属于字符型,为了便于后续分析,我们将“未知”两个字替换为整型。
        4 数据可视化分析
        4.1 简单概括性分析
        数据初步清洗完毕,进行分析之前先检查一下数据缺失情况,如果数据缺失严重,需要对缺失值进行填补或者其他处理,否则会影响数据分析结果准确性。检查结果如图3,从图中可以看出数据没有严重缺失,再对数据做描述性统计分析如图4,可以看出武汉市二手房的价格均值约为212.6万,平均面积102.8平方米,两者相除得出的每平米均价约2万多,与统计结果中每平米单价的均价基本一致,说明该数据异常值不明显,可以进行数据可视化。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。