【python案例】基于Python 爬虫的房地产数据可视化分析设计与实现

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 本文设计并实现了一个基于Python爬虫的房地产数据可视化分析系统,通过BeautifulSoup框架采集房源信息,使用pandas进行数据处理,MySQL存储数据,并利用pyecharts进行数据可视化,以帮助用户更直观地了解房源信息并辅助选房购房。

引言

研究背景与意义

房地产行业在我国属于支柱性产业,在我国社会经济发展中一直扮演着重要角色。房价问题,尤其是大中城市的房价问题,一直是政府、大众和众多研究人员关注的热点。如何科学地预测房价是房价问题的研究方向之一。随着互联网时代的来临,如今越来越多的民众选择通过网络获取房源信息并进行选房购房,如何尽可能多角度的呈现房源信息帮助民众选房成为一个值得深人研究的课题。

为此,本研究使用爬虫技术获取温州二手房的房源信息,然后使用数据处理模块采用去重、分组、填补缺失值等处理方法,并根据处理的结果,找出各个变量之间的线性或者非线性关系,从而找出影响房价的因素。在房价数据抓取阶段使用Python爬虫技术,该方法获取的房价数据与传统从政府信息网站获取的房价数据相比更加丰富并具有时效性。在房价数据处理时使用pandas库和正则表达式对房源信息进行处理,在利用热力图找出各个变量和房价直接的关系,从而找出影响房价的原因。在房价数据展示部分利用pyechart实现房源统计信息可视化展示,包括呈现房价排名、房价区间等等可视化图表,可以帮助消费者更加高效了解房源信息,更快更清晰地选房、购房。

主要研究内容

本研究主要实现一个基于Python 爬虫的房地产数据可视化分析系统。此系统实现了beautifulsoup框架进行数据采集、pandas数据处理、MySQL进行数据存储、以及使用pyechart进行数据可视化等部分。主要研究内容分为以下五点:

1、基于beautifulsoup框架的房源信息采集,爬取目标数据包括基本信息、房屋属性、交易属性等

2、伪装请求头和使用ip代理、设置采集频率等方式对抗反爬虫。

3、pandas库和正则表达式对房源数据进行处理。对爬取数据进行查数据一致性,处理无效值和缺失值等操作目的在于删除重复信息、纠正存在的错误,并提供数据一致性。

4、mySQL持久化存储数据。

5、Pyecharts数据可视化展示。可视化模块对数据进行可视化的呈现,使消费者更直观的观察各地区价格户型之间差异。

论文结构

  • 引言;剖析研究背景和意义,说明研究的内容。
  • 开发技术;代码主要使用了python技术,beautifulsoup爬虫框架和myspl数据库,并对此做了介绍。
  • 需求分析;囊括需求功能、流程图进行了分析。
  • 功能需求设计;包括爬虫功能模块、数据处理模块、可视化模块和数据库进行详细设计。
  • 功能需求实现;对需求和功能实现和描述。
  • 功能测试。包括爬虫、和数据处理、数据库等模块进行测试
  • 总结心得;在论文最后结束章节总结了开发这个系统和撰写论文时候自己的总结、感想,包括致谢

一、开发技术

(一)Python语言

Python语言的编程风格与C语言非常接近,它继承了C++面向对象技术的核心,它面世之后发展迅速,非常流行,对高级C语言形成了很大的冲击。业内人士称之为“一次编译、到处执行”。当然python也有缺点,在每次执行编译后,字节码都需要消耗一定的时间,在某些程度上降低了性能。但是这并不影响python成为此次设计语言的选择。

表2-1 Python优势

序号

优势

1

Python面向对象技术,有四个特点:封装、继承、多态、抽象。

2

Python通用性强,在任何平台上,只要有Python虚拟机,Python代码都能运行

3

Python对内存的访问都必须通过对象的实例变量来实现,避免了指针中出现的错误

4

Python提供了多线程功能,利用编程实现同一时间同时工作的功能。

(二)MySQL数据库

因为MySQL是源代码对外开放的,所以任何人都可以通过相应的方法下载,并根据个性化需求进行修改。 由于MySQL的速度,可靠性和适应性,MySQL受到重视。

(三)beautifulsoup爬虫框架

是用Python写的一个HTML/XML的解析器,它可以很好的处理不规范标记并生成剖析树(parse tree)。 它提供简单又常用的导航(navigating),搜索以及修改剖析树的操作。利用它我们不在需要编写正则表达式就可以方便的实现网页信息的提取。

(四)MySQL数据库安装

本系统的数据使用的是MySQL,所以要将MySQL安装到指定目录,如果下载的是非安装的MySQL压缩包,直接解压到指定目录就可以了。然后点击C:\Program Files\MySQL\bin\winMySQLadmin.exe这个文件其中C:\Program Files\MySQL是MySQL安装目录。输入winMySQLadmin的初始用户、密码(注:这不是MySQL里的用户、密码)随便填不必在意,确定之后右下角任务的启动栏会出现一个红绿灯的图标,红灯亮代表服务停止,绿灯亮代表服务正常,左击这个图标->winnt->install the service 安装此服务,再左击这个图标->winnt->start the service 启动MySQL服务。

修改MySQL数据库的root密码。用cmd进入命令行模式输入如下命令:

cd C:\\Program Files\\MySQL\\bin

MySQLadmin -u root -p password root

回车出现Enter password: ,这是要输入原密码. 刚安装时密码为空,所以直接回车,此时MySQL 中账号 root 的密码被改为 root 安装完毕。

(五)系统运行环境

上述目标来分析本系统的硬件如下:

inter的处理器;

内存是 4G;

硬盘是120G;

操作系统是Window 10;

Pycharm社区版

MySQL8.0

Navicat12

二、需求分析

(一)技术可行性分析

本系统开发选择python技术,python技术是一个完全面向对象的语言,为开发者提供了丰富的类库,大大减少了使用windows编程的难度,减少开发人员在设计算法上的难度,作为python技术开发 pycharmo更是一个必不可少的角色,它友好的界面,以及强大的功能,给程序开发人员带来了很多方便,加上环境简单,转移方便,无疑使此系统最佳的选择。

(二)经济可行性分析

Python是一款开源免费的脚本语言,Pycharm开发环境也有免费的社区版,而且MySQL也是一款优秀的免费的数据库。因此开发成本几乎可以忽略不计,因此经济可行性非常高。

(三)操作可行性分析

本系统的开发符合国家法律进行,也不会触犯到任何人,任何集体的法律权益。只要开发过程中遵纪守法就完全符合法律要求,并且使用计算机的用户都会具有一定的计算机基础,并且本系统操作方法简单,分析的均为计算机相关方面的人才,所以用户绝对能够熟练使用该系统,并且普通会使用计算机的人群也能使用。因此社会可行性很高。

(四)需求功能分析

基于Python 爬虫的房地产数据可视化分析,要求实现数据爬取模块,数据清洗模块,数据可视化模块以及数据存储模块。实现对温州链家二手房网站房源数据采集、经过pandas库清洗处理后MySQL数据库中,结合Pyecharts组件,实现数据到可视化图表的转换,帮助消费者更加高效了解房源信息,更快更清晰地选房、购房。本研究的结构设计如图3-3-1所示

图3-3-1房地产数据可视化分析结构设计图

三、功能需求设计

(一)需求功能模块设计

1.数据爬取模块

程序模拟浏览器访问温州链家二手房网获取响应信息,提取其中所有房源数据,包括房源名称、地址、单价、总价、面积、户型等,下面是数据爬取流程图,如图3-4-1所示。

图4-1-1 数据爬虫流程图

2.数据处理模块

爬虫提取其中所有房源数据后,经过正则表达式的清洗,将空格还有一些特殊符号去掉,在存到数据库当中,下面是数据处理流程图,如图3-5-1所示。

图4-1-1数据处理流程图

3.数据存储模块

在爬虫运行之前,我们先将数据库和数据表建立,其中先通过mysql.py建立一个浙江房地产数据库和一张房地产数据表,爬虫提取清洗其中所有房源数据后,经过pymysql库,存到数据表当中,实现持久性存储。

  1. 数据可视化模块

要做房地产数据分析就要使用可视化操作,在keshihua.py中先通过pandas库处理数据,经过分组、转换数据类型、去重、求和之后,经过pyechart库和matloplit库的渲染,生成可视化图表,可视化流程图如图4-1-2所示。

图4-1-2可视化流程图

(二)数据库设计

1.数据库概念设计

概念模型是对现实中的问题出现的事物的进行描述,ER图是由实体及其关系构成的图,通过E-R图可以清楚地描述系统涉及到的实体之间的相互关系。实体图如图4-2所示:

图4-2 房地产数据实体图

2.数据库物理模型设计

表4-2:房地产数据表

字段名称

类型

长度

字段说明

主键

默认值

索引

int

主键

主键

title

varchar

标题

pisition

varchar

100

地址

tag

varchar

100

标签

followinfo

varchar

100

信息

vr

varchar

200

Vr看房

info

varchar

详细信息

总价

varchar

总价

单价(rmp)

varchar

单价

关注人数

varchar

关注人数

发布时间

varchar

发布时间

几室

varchar

几室

几厅

varchar

几厅

面积

varchar

面积

楼层

varchar

楼层

四、功能需求实现

(一)爬虫功能实现

1.确定url

通过网页发现温州链家二手房网页地址可以用下面的公式来表示:https:// + 城市名称拼音缩写 + .lianjia.com/ershoufang/pg +页码+/,根据此规律,就可以获得温州链家二手房的所有网页的网址。

2.添加伪装浏览器的请求头

获取了url之后,我们需要利用函数requests.get() 来得到该网页下html的内容。但是直接利用requests.get()函数获取html的内容会报错,服务器拒绝访问。大部分网站都有反爬虫的机制,但链家官网的反爬虫机制比较简单,只需要添加网页的headers从而模仿人为使用浏览器访问链家二手房网页。

3.beautifulsoup解析

第二步只是简单获取了文本参数,还需要对html的内容进行解析。这个时候,就可以在程序中导入BeautifulSoup,作为解析html内容的工具。当然过程中发现中间掺杂了大量标签, 而结果只需要文字。就只能通过正则表达式等方式去除标签,去标签提取文本内容的结果,结果如图5-1爬虫结果所示。

图5-1爬虫结果

(二)数据处理功能实现

获取了数据之后,需要首先对数据进行预处理,本论文中的预处理操作比较简单,利用pandas库,直接采用astype()包含对数据类型进行转化、dropna()清除空值、对异常的数据进行筛选和删除、groupy()数据列的拆分(将一列数据拆分为多列数据)等操作。结果如图5-2 数据处理结果。

图5-2 数据处理结果

(三)数据存储实现

在爬取数据后,就可以对数据进行存储,这里使用的是pymysql库进行创库建表操作,然后在利用pymysql的connect方法往数据表中实现insert操作,结果如图5-3 数据存储结果。

图5-3 数据存储结果

(四)数据可视化实现

1.户型特征分析

户型特征分析,是基于二手房的户型特征,对二手房的数量进行统计分析。通过户型特征分析,可以看到二手房中几室几厅的二手房最受欢迎。这里使用的是pyechart库的pie模块,对筛选的户型数据进行渲染,生成饼图。结果如图5-4-1 户型分析

图5-4-1 户型分析

2.区域特征分析

区域特征分析,是基于小区,对二手房进行统计,通过此操作,可以看到,哪个小区的二手房数量最多。这里使用的是pyechart库的bar模块,对筛选的小区数据进行渲染,生成柱形图。结果如图5-4-2 区域特征分析

图5-4-2 区域特征分析

3.面积特征分析

面积特征分析,是基于二手房面积,对二手房进行统计分析。将二手房面积划分不同的区间,同时,结合二手房价格,验证二手房面积越大,价格是否越昂贵。这里使用的是pyechart库的bar和scatter模块,对筛选的面积数据进行渲染,生成面积分布图和面积和总价散点图。结果如图5-4-3 面积分布图和图5-4-4面积总价散点图

图5-4-3 面积分布图

图5-4-4面积总价散点图

4.装修特征分析

装修特征分析,是基于二手房装修类型,结合二手房每平米售价进行分析。这里使用的是pyechart库的line模块,对筛选的装修特征数据进行渲染,生成装修特征分析图。结果如图5-4-5 装修特征分析图

图5-4-5 装修特征分析图

5.楼层分析

楼层分析是基于二手房的所在楼层,对不同楼层的二手房进行统计作图,更能直观的看到不同楼层二手房的数量。这里使用的是pyechart库的bar模块,对筛选的楼层数据进行渲染,生成楼层分析图。结果如图5-4-6楼层分析图

图5-4-6楼层分析图

6.热力图分析

通过前面的分析,要找出影响房价的因素有哪些,就要利用热力图展示各个变量和房价之间的关系,当然先要对可能影响房价的所有变量求相关系数,利用corr()方法求出,再利用seaborn中的heatmap函数绘制热力图。结果如下图5-6-1热力图

图5-6-1热力图

五、功能测试

(一)测试内容

基于Python爬虫的房地产信息可视化分析主要是房地产数据采集和处理,以及持久化存储,对数据进行可视化产生,所以我们主要测试系统是否能采集、数据处理是否成功,存储是否实现,可视化是否正常。所以选择开发人员手工执行测试用例的方式进行。以下是对基于Python爬虫的房地产信息可视化分析系统进行的详细说明。基于Python爬虫的房地产信息可视化分析系统测试用例,如表6-1所示。

表6-1 基于Python爬虫的房地产信息可视化分析系统测试用例

测试名称:基于Python爬虫的房地产信息可视化分析系统测试

测试目的:看可视化功能是否正确显示可视化图片,爬虫是否能正常爬取,数据库是否能政策存入数据。

前置测试:成功连接数据库,并可视化展示房地产可视化信息。

主要参与者:用户

功能模块

测试目的

测试步骤

预期结果

爬虫模块

尝试爬取前几页,观察是否能正常采集数据

输入测试页数6页

成功:运行界面出现了采集的房地产信息;错误:没有其他信息

数据处理

点击运行测试采集数据,观察是否能正常处理成我们想要的数据,包括去重、包括去空值等

点击运行spider.py和keshihus.py

成功:运行界面出现处理后的结果。

失败:数据不变

数据存储

运行mysql.py,查看是否能成功建表和存储测试数据

运行mysql.py

成功:数据库和数据表建立成功。

失败:数据表和数据库不能成功创建

数据可视化

选择测试数据,运行keshihua.py查看是否有可视化图片生成

运行keshihua.py

成功:可视化图表成功创建

失败:可视化图表不能显示

(二)测试结果

本系统的所有功能经过测试后已经完全满足要求。本系统满足了房地产数据信息爬取,房地产数据处理,房地产数据存储,房地产信息可视化图表展示。

六、结论和总结

本次论文完成了对于基于Python爬虫的房地产信息可视化分析,基本上达到了任务要求,通过网络爬虫,根据需求获取海量房源数据,进行数据清洗,去重,入库,存表,数据可视化,把分析结果反馈给用户,并把数据结合数据库存储,以直观明了的可视化图表展示数据等功能,提高工作效率,提供令人满意的结果。

虽然本次设计已经完成,但是还有很多问题需要在今后的学习过程中解决。

其一,更充分的认识到Python的应用确实是当下较为容易入门和掌握的开发模式。可并没有能完全的掌握这种开发方式的优势,未能发挥其全部能力,甚至只是用的它的冰山一角。需要更深入的学习才能在今后的工作中有更好的发挥。

其二,在Python爬虫编程应用上必须通过进一步的研究来完善这一方面的知识,才能脱离现在只能对其进行浅层次的应用的现状,以实现更多更好的系统功能。

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
3天前
|
数据挖掘 PyTorch TensorFlow
|
5天前
|
数据处理 数据库 Python
我在日常办公中使用python的案例分享
我在日常办公中使用python的案例分享
19 4
|
5天前
|
数据采集 机器学习/深度学习 数据可视化
python在传媒行业的案例分享
python在传媒行业的案例分享
17 2
|
5天前
|
机器学习/深度学习 数据采集 算法
时间序列结构变化分析:Python实现时间序列变化点检测
在时间序列分析和预测中,准确检测结构变化至关重要。新出现的分布模式往往会导致历史数据失去代表性,进而影响基于这些数据训练的模型的有效性。
23 1
|
3天前
|
存储 算法 安全
Python案例分享:如何实现信息的加解密
Python案例分享:如何实现信息的加解密
19 10
|
3天前
|
Java 数据安全/隐私保护 Python
Python案例分享:如何实现文件的解压缩
Python案例分享:如何实现文件的解压缩
24 8
|
2天前
|
存储 算法 测试技术
预见未来?Python线性回归算法:数据中的秘密预言家
【9月更文挑战第11天】在数据的海洋中,线性回归算法犹如智慧的预言家,助我们揭示未知。本案例通过收集房屋面积、距市中心距离等数据,利用Python的pandas和scikit-learn库构建房价预测模型。经过训练与测试,模型展现出较好的预测能力,均方根误差(RMSE)低,帮助房地产投资者做出更明智决策。尽管现实关系复杂多变,线性回归仍提供了有效工具,引领我们在数据世界中自信前行。
12 5
|
2天前
|
机器学习/深度学习 数据挖掘 TensorFlow
🔍揭秘Python数据分析奥秘,TensorFlow助力解锁数据背后的亿万商机
【9月更文挑战第11天】在信息爆炸的时代,数据如沉睡的宝藏,等待发掘。Python以简洁的语法和丰富的库生态成为数据分析的首选,而TensorFlow则为深度学习赋能,助你洞察数据核心,解锁商机。通过Pandas库,我们可以轻松处理结构化数据,进行统计分析和可视化;TensorFlow则能构建复杂的神经网络模型,捕捉非线性关系,提升预测准确性。两者的结合,让你在商业竞争中脱颖而出,把握市场脉搏,释放数据的无限价值。以下是使用Pandas进行简单数据分析的示例:
12 5
|
2天前
|
存储 安全 算法
RSA在手,安全我有!Python加密解密技术,让你的数据密码坚不可摧
【9月更文挑战第11天】在数字化时代,信息安全至关重要。传统的加密方法已难以应对日益复杂的网络攻击。RSA加密算法凭借其强大的安全性和广泛的应用场景,成为保护敏感数据的首选。本文介绍RSA的基本原理及在Python中的实现方法,并探讨其优势与挑战。通过使用PyCryptodome库,我们展示了RSA加密解密的完整流程,帮助读者理解如何利用RSA为数据提供安全保障。
13 5
|
3天前
|
存储 缓存 安全
Python案例分享:如何实现文件的上传下载
Python案例分享:如何实现文件的上传下载
29 6