基于Python的廊坊市二手房数据爬取及分析

2021-12-24 07:13王彦雅
电脑知识与技术 2021年29期
关键词:可视化分析爬虫数据分析

王彦雅

摘要:随着经济发展,全国房价不断攀升,影响房价上涨的因素成为人们关注的焦点。以廊坊市为例,利用Python语言中的Scrapy爬虫框架对链家网中廊坊市各区县的二手房数据进行爬取,并将爬取到的数据进行清洗、可视化、分析,最后总结出影响廊坊市二手房房价的关键因素,对准备购买廊坊市区房屋的刚需或者投资者起到辅助决策作用。

关键词:Python;爬虫;Scrapy;数据分析;可视化分析

中图分类号:TP391  文献标识码:A

文章编号:1009-3044(2021)29-0168-03

1背景

近年来,全国房价普遍上涨,导致许多人背负的房贷越来越重,很大程度降低了人们的生活水平。尤其是河北省的廊坊市,地理位置优越,位于京津走廊之间,并且距离雄安新区仅有一百公里。价格上涨速度始终位居全国前列,这导致人们对住房的价格十分关注。许多投资者也来到廊坊市投资房屋,由于价格上涨较多,促使许多刚需者和投资者选择了价格较低的二手房。

伴隨着大数据时代的到来,网络中的数据信息愈来愈多,如何搜集、整理和分析有用的信息是目前面临的难题。由此,网络爬虫应运而生。网络爬虫[1]又称网络机器人,它的主要任务是模仿人类浏览网页,躲过网站反爬拦截,将浏览到的网页信息存储至本地,可以大幅降低人工成本。本文以链家网为例,使用网络爬虫自动获取廊坊市二手房信息,包括位置、面积、户型、单价等,并对搜集的信息进行可视化分析,以便探究廊坊市价格上涨背后的原因,对廊坊市二手房购买者提供一定的帮助。

2 Python及Scrapy爬虫框架的简介

Python作为一种解释型的脚本语言在近些年的计算机领域颇受欢迎。并且它的应用领域不仅局限于Web开发、后端开发和软件开发,更是在目前最为流行的大数据和人工智能领域有着举足轻重的地位。Python 的崛起源于它有着庞大的第三方库,通过模块的引入,使得人们在编写简易代码的同时能够解决更多的难题。由于Python第三方库的强大,这也使得利用 Python编写爬虫程序较为方便简洁。

Scrapy框架[2]的开发基于Python语言,它是专门为网络爬虫所设计出来的第三方库。Scrapy框架可以使用户更容易的爬取大规模的数据,它的自动调节机制可以大幅提升爬取速度。

Scrapy框架包括七个部分:

1)引擎(Scrapy Engine):负责数据和信号在不同模块间的传递(Scrapy 已实现)。

2)调度器(Scheduler):将引擎传送过来的request请求存储到队列中(Scrapy 已实现)。

3)下载器(Downloader):下载引擎发过来的request请求,并返回给引擎(Scrapy 已实现)。

4)爬虫(Spider):将引擎发送来的response 中的数据和路径提取,并返回给引擎(需手写)。

5)管道(Item Pipeline):将引擎提取到的数据存储到本地(需手写)。

6)下载中间件(Downloader Middlewares):如设置下载代理等需求,可自行修改(可更改)。

7)Spider 中间件(Spider Middlewares):可将 requests 和 re⁃sponse中的请求自定义过滤(可更改)。

3数据爬取及函数介绍

本文使用的测试环境为 WINDOWS 10专业版,Pycharm 2020.1(专业版),Python 3.8.5,Scrapy 2.4.1。

3.1创建项目

首先创建此次爬取程序的项目文件,在 Windows Power⁃ Shell 中输入 scrapy startprojectlflianjiascrapy创建项目文件,自动生成scrapy框架文件,其中lflianjiascrapy为项目名称。爬虫框架生成后,进入lflianjiascrapy文件夹,输入 scrapy genspiderLFLianJia lf.lianjia.com/ershoufang生成爬虫文件,其中LFLian⁃ Jia为爬虫名字,lf.lianjia.com/ershoufang为允许爬取的域名。

3.2主要函数功能介绍

Input()函数是 python 中用于手动输入数据的内置函数。 Requests库是爬虫中非常重要的库,其功能是将网页中的源代码返回至本地,为提取网页数据提供了先决条件。Xpath方法可以寻找网页源代码中的标签及标签属性值,也可以使用/text()提取标签对之间的文本内容,是提取网页内容的重要方法。

3.3网页解析

本文想要获取链家网[3]中廊坊市各区县的房屋数据,使用谷歌浏览器访问链家网,并检索廊坊市,发现一共有8个区,其中永清区的房屋数量过少,不具有参考价值,故将其忽略。其他每个区的房子共展示3000条,并被成10页展示。所需要的房屋数据信息均在网页源码中存在。若要获取每个房屋的信息需进入每个房屋址,而且要进行29次翻页操作,经观察发现每页地址仅有“page=”后的参数不同且遵循一定规律,即从1逐渐增加至30。故使用循环访问每一条数据的地址和进行翻页操作。

3.4访问网页

从Pycharm进入创建的LFLianJia.py文件,使用input()函数手动输入起始链接地址。复制第一页地址,使用requests库访问,由于链家网存在一定的反爬功能,故在settings.py文件中将默认请求头修改成浏览器的请求头,并设置获取网页信息的时间间隔,即可绕过反爬检测。利用循环实现访问每条房源的地址和进行29次翻页操作,并将网页源代码使用 response 变量接收。

3.5解析数据

分析response 中的网页源代码结构,其中包含了每个房屋的面积、户型、朝向等数据,故将其中所需要的信息进行提取即可。Xpath方法可以查找网页源码中的信息,将其进行遍历、定位和获取。使用Xpath方法获取网页源代码中的标签属性值和文本内容。分析源码中所需数据的位置后,使用相应的表达式可以将数据提取至本地。

3.6存储数据

爬虫内部结构完成后,在piplines.py文件中定义一个管道类,重写process_item方法,并且使用正则表达式re.sub()函数进行数据清洗,将数据中的空白值删除。在settings.py 中启用该管道类,完成所有代码后回到Windows PowerShell 中,输入scra⁃py crawl LFLianJia,再手动输入起始页的地址运行爬虫程序。最后获取的数据将生成一个.csv文件存储到本地。由于直接打开.csv文件会导致数据乱码情况,故新建一个.xlsx文件,将.  csv 文件中的数据全部导入至.xlsx 文件中,部分数据如图1 所示。

4数据的可视化及分析

数据可视化[4-5]是将数据由文本形式转化成图表形式,使人们更直观地观察到数据之间的关系及变化情况,在数据分析中有着重要意义。本文使用matplotlib、numpy和pandas库[6]相结合的方式将爬取到的二手房数据进行可视化分析。包括廊坊市各区县二手房的单价与总价的比较、面积与总价的关系和户型占比。并绘制成条形图、饼图和散点图。本次爬取到七个区县共计18362条数据。其中包括每个房屋的标题、小区名称、户型、面积、朝向、装修、楼层、结构、单价和总价。

4.1廊坊市各区县二手房均价比较

房地产行业在中国的经济占比中有着非常重要的作用,全国房地产开发投资占固定资产投资总额的20%,占国内生产总值近10%,已成为国内需求的重要组成部分。而且房地产还是地方政府财政收入的重要来源,2019年全国商品房的销售额突破了19万亿,创造了历史新高。由图2和图3可以看出,廊坊市二手房平均单价和总价最高的是燕郊和大厂。平均单价为17000元/平米和14000元/平米。平均总价达到了164万元和162万元。其他区县的单价在10000-13000元不等。总价在94-133万元不等。由于燕郊拥有直达北京的地铁站,大厂也紧邻燕郊,所以越来越多的北京打工者们选择了居住在燕郊和大厂,这也直接导致了燕郊和大厂的房价稳居前列。平均单价和总价最低的是固安和香河。平均单价为11000元/平米和9900元/平米。平均总价为107万元和94万元。由于固安和香河距离北京和廊坊市区较远,并且人流量较少,故而房价较低。

4.2廊坊市二手房户型占比

通过图4 可以看出,廊坊市在售二手房中一室一厅占4.3%,两室一厅占 27.2%,两室两厅占 21.7%,三室一厅占 15.0%,三室两厅占26.5%,而四室及以上的房屋占有量仅为5.3%。说明两室和三室的户型在市场中占据了主导地位,总共占所有房型的90.4%。直观表明了目前绝大多数家庭所住的房屋为两室或三室。而四室及以上的大型房屋的持有量较低,说明市场保有量不高,流动性也相对较小。

图5是房屋面积与总价之间关系的散点图,可以看出随着房屋面积的增加,价格也在随之上升,两者总体上呈正相关。散点在60-150平米之间且价格在50-200万元之间的数量最密集,说明面积60-150平米且价格在50-200万元之间的房屋持有量最高,市场流动性最大。60-150平米之间的房屋基本都是两室或三室,也验证了两室和三室在二手房市场中占据主要地位这一结论。

5结束语

爬虫技术是目前获取大量网页信息最重要的方法之一,在目前这个大数据流行的时代,更是凸显其重要性。本文运用爬虫和可视化技术在链家网中将廊坊市各区县的二手房信息进行获取与可视化分析。分析可得,廊坊市在售二手房中两室和三室的户型占比最大,占到了90.4%,且价格区间基本在60-150万元之间。距离北京最近的燕郊和大厂的房价最高,均价基本在16000元左右,说明地理位置对于廊坊市的房价起着极其重要的性作用。

参考文献:

[1]庄礼金,戴泽鑫. 网络爬虫的设计与实现[J].信息技术与信息化,2020(12):47-49.

[2]邹维,李廷元.基于Scrapy爬虫框架的领域网站文件爬取[J].现代信息科技,2020,4(21):6-9.

[3]戴瑗,郑传行.基于Python 的南京二手房数据爬取及分析[J].计算机时代,2021(1):37-40,45.

[4]邱俊杰.基于Python定向爬虫技术对微博数据可视化设计与实现[J].电脑知识与技术,2020,16(22):43-44,47.

[5]熊畅.基于Python爬虫技术的网页数据抓取与分析研究[J].数字技术与应用,2017(9):35-36.

[6]宋永生,黄蓉美,王军.基于Python 的数据分析与可视化平台研究[J].现代信息科技,2019,3(21):7-9.

【通聯编辑:谢媛媛】

猜你喜欢
可视化分析爬虫数据分析
利用网络爬虫技术验证房地产灰犀牛之说
基于Python的网络爬虫和反爬虫技术研究
利用爬虫技术的Geo-Gnutel la VANET流量采集
大数据环境下基于python的网络爬虫技术
我国职业教育师资研究热点可视化分析
声波吹灰技术在SCR中的应用研究
可视化分析技术在网络舆情研究中的应用
国内外政府信息公开研究的脉络、流派与趋势
新常态下集团公司内部审计工作研究
浅析大数据时代对企业营销模式的影响