基于Python爬虫技术的北京链家二手房数据分析与可视化
作者: 付腾达 汤志宏 李卫勇 彭炜业 孙涵
关键词:Python;北京链家网;二手房;爬虫技术;Matplotlib;数据可视化
中图分类号:TP311 文献标识码:A
文章编号:1009-3044(2024)21-0063-04
0 引言
随着城市化进程的不断推进,二手房市场因其优势诸如性价比高、自带装修和完善配套而受到了广泛关注。然而,随之而来的是庞大而混杂的二手房交易信息,使得购房者在网络上寻找理想房源变得异常困难。为解决这一难题,很多研究者纷纷投入了对二手房数据信息的研究中。张玉叶[1]对二手房建筑面积与房价、楼层分布等进行了分析。王彦雅[2]则关注廊坊市二手房均价、户型占比、面积与总价之间的关系。姬正骁[3]则针对武汉市二手房面积、价格和户型等进行了研究。而冯崇军[4]则专注于南京市二手房的房源总价、市场热点及户型分布等方面进行了详细分析。
针对上述研究成果,本文基于爬虫技术,从北京链家网爬取了北京市二手房的相关信息。通过数据分析与可视化图表呈现,为计划在北京购买二手房的购房者和房地产中介提供了实用的支持与指导。
1 相关技术
1.1 网络爬虫
网络爬虫是互联网上爬取数据的一段自动化脚本。它通过向目标网站发送URL请求来获取所需的数据信息。我们使用Python语言,并结合Anaconda集成开发环境工具,利用一些库如BeautifulSoup、Jieba、WordCloud和openpyxl等,来处理和爬取数据,以便后续进行分析。
1.2 Matplotlib库
Matplotlib是Python中备受青睐的数据可视化库,可用于绘制各种类型的图表,包括柱状图、散点图、饼图等。它因其简单易用和灵活的图表定制功能而闻名,并具有出色的跨平台性能,在各种操作系统上都能够运行。作为Python生态系统中的重要组成部分,Matplotlib为数据科学家和分析师提供了丰富多样的图形工具,帮助他们有效地探索和数据呈现。
1.3 Jieba分词库
Jieba分词库是一款备受欢迎的Python工具,专注于高效精准的分词处理,并具备多种分词模式切换功能。此外,Jieba还允许用户自定义词典,以满足不同领域文本分析的需求。因此,该库在中文自然语言处理和文本挖掘领域中得到广泛应用。
2 二手房数据爬取与预处理
2.1 二手房数据爬取
设计二手房数据爬虫数据和可视化展示流程如下:
步骤1:分析出有效的URL链接。
步骤2:访问待爬取的二手房数据。
步骤3:对爬取的数据进行预处理操作,清洗后存储到CSV文件中。
步骤4:数据分析并可视化展示。
二手房信息爬虫流程图如图1所示。
2.2 分析URL
通过对页面结构分析可知,有效数据URL格式可归纳为:https://bj.lianjia.com/bigArea/smallArea/pg +str(i),通过翻页对比,发现在URL中,“bigArea”参数代表大区域,如东城区,而“smallArea”参数表示小区域,如东城区下的安贞区。另外,“str(i)”参数代表页数,随页面的变化而相应变化。
因此,可以利用循环来生成并存储所有二手房相关页面的URL,并将这些URL有序地存储在一个列表中,以便后续的数据采集过程更为便捷。
2.3 二手房数据页面结构分析
在确定爬取范围后,提取第一页的页面地址作为起始URL,同时提取末页的页面地址作为结束URL。
1) 获取一级目录页信息。在一级目录页中,需要获取房源所在的大区域和小区域数据。大区域如东城区、西城区等这样的区域;而小区域则是指大区域下具体包含的子区域,比如东城区下的安定门区、安贞区等。如图2所示。
在一级目录页中,需要爬取的数据还包括房源相关信息,主要有户型、价格、朝向、楼层、建房时间、建筑面积等内容,如图3所示。
2) 获取二级目录页信息。在二级目录页中,房源信息包括房源标签和核心卖点等内容,如图4所示。
2.4 爬取招聘数据
经过对一级、二级目录页面结构分析,可知待爬取的信息主要有大区域、小区域、户型、价格、房屋朝向、楼层、建房时间、建筑面积、房源标签和核心卖点等。
先利用Google浏览器的开发者工具F12查看网页中待爬取的房源信息。然后在请求头Headers中添加一个“User-Agent”用户代理,便于将代码伪装成浏览器的形式,以绕开反扒机制,从而获取数据。接着通过使用requesrts库的get()方法发送请求并获取数据,然后使用BeautifulSoup库和html.parser解析器并结合正则表达式,进行数据解析与爬取操作。
2.5 数据保存到CSV文件中
本文采用CSV文件格式存储爬取的数据。先使用openpyxl库中Workbook()方法创建一个工作簿。接着,在该工作簿下使用create_sheet()方法创建一个工作表,然后通过使用append()方法将所需数据写入到该工作表中,最后调用save(′文件路径′)方法将数据保存到CSV文件中。如图5所示。
2.6 预解析数据
从北京链家网爬取的房源数据中,存在一些不规范且无法直接使用的脏数据。需对其进行数据预处理,以清理无效的脏数据。预解析有处理重复值、缺失值、空数据、异常值及字段格式化等操作,预处理后将数据加以整合,以便进行数据分析及可视化。
预处理操作具体如下:
1) 删除重复的房源信息,以确保不会重复使用相同的房源信息。
2) 删除存在缺失、空值或者异常值的房源数据,包括户型、价格、建房屋朝向等信息。
3) 对原数据中带有单位信息的列进行格式化处理。例如,对于需要参与数值分析的列,如“建筑面积”“价格”“楼层”“创建时间”等,去除其单位信息,并将保留下来的数值转化为int或float类型[5]。
4) 房屋面积分组为方便对房屋面积大小及房源数据分析,对房区面积进行有效的分组处理[6],每个组间距为50 m2,房屋面积被划分为以下组区间:0-50、50-100、100-150、150-200、200-250、250-300 等。如面积为50.2 m2 被划入区间50-100内。最终数据如图6所示。
3 数据可视化
本文使用Python中数据可视化库Matplotlib,将爬取的北京市东城区二手房源数据进行可视化分析。通过观察这些可视化分析图,可为二手房购买者和房地产中介提供一定的帮助和参考。
3.1 TOP10区域房源数量分析
根据图7的数据分析结果显示,安贞区、和平里及朝阳门外是房源数量最多的地区。这是由于它们均位于繁华地带,拥有便利的交通和优质的教育资源等优势。这些因素吸引了更多的人选择在这些地区居住,从而促使更多的房东选择在这些地区出售房屋。
3.2 二手房房屋面积分布分析
根据图8的数据显示,北京市东城区二手房源市场中,房屋面积在50-100 m2的房源数量最多,超过3000套,位居首位。其次是0-50m2和100-150m2的房源,而超过200m2的房源相对较少。这表明中小户型的二手房市场更受欢迎。二手房房屋面积分布分析如图8所示。
3.3 二手房房屋面积与房价关系分析
根据图9的数据分析,房屋面积在50-100m2的房源占据了较大的市场份额,并且与总价之间存在较强的相关性。这个范围内的房屋价格通常在500~1000万之间,该价格在购房者能够接受的范围之内,因此成为购房者们的首选。随着房屋面积的增加,投入成本也随之增加,这也导致房屋价格呈上升趋势。如图9所示。
3.4 TOP9区域各户型房源数量分析
对东城区下排名在前TOP9区各户型房源数量进行详细分析发现,无论在哪个区域,户型为“2室1厅”的房源数量均排在首位,其次是户型为“1室1厅”和“3室1厅的房源。这一现象可能有几个原因:首先,“2室1厅”的户型具有适中的空间,既不会显得过于拥挤,也不会太过空旷,能够满足大多数家庭的生活需求。其次,这种户型的房屋面积适中,价格相对合适,符合购房者的预算范围,因此受到广泛欢迎。详细的TOP9区域各户型房源数量分析结果如图10 所示。
3.5 二手房各类户型房源占比分析
根据图11的数据显示,北京市东城区在售的二手房中,户型为“2室1厅”占48%,“1室1厅”占19%,“3 室1厅”占18%,而四室以上的户型房屋占比份额较少。这表明在市场中,户型为“2室1厅”“1室1厅”“3 室1 厅”的房屋占据主导地位,总共占所有房型的85%。这与对图10中东城区下TOP9区各户型房源数量的分析结果一致。因此,绝大多数家庭所居住的房屋为1-3室且1厅。较大型的四室及以上房屋相对较少,这也说明市场流动性相对较低。
3.6 二手房核心卖点关键词分析
根据图12结果可知,“满五年”是出现频率最高的关键词,表明购房者在选择房屋注重稳定性,希望避免频繁搬迁带来的不便。此外“南北通透”“户型”“视野”“采光”等词频也比较高,显示购房者对于房屋户型设计、采光等方面比较注重。说明购房者更倾向于购买二手房用于居住而非投资。
4 结论
本文运用Python中的数据可视化库Matplotlib,对从北京链家网获取的二手房源信息进行了相关的数据可视化分析。主要包括TOP10区域的房源数量、二手房房屋面积分布、房屋面积与价格的关系、各类户型房源占比以及东城区下TOP9区各户型房源数量等多个方面的分析。通过图形化展示这些分析结果,为希望在北京购买二手房的购房者及房地产中介等提供了一定的参考价值。