百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术资源 > 正文

Python案例:一个房地产网站数据采集及简单可视化分析

off999 2024-12-16 15:20 33 浏览 0 评论

这次分享一个房地产网站数据采集及可视化分析的Python实际案例,应用效果还是有,步骤如下:

1、获取目标网站

2、分析网站,确定数据采集的方法

3、对采集的数据进行处理

4、最后可视化

先看看最终效果:

首先获取目标网站,可以发现获取的数据信息都在网页上面,所以可以直接使用xpath标签定位获取网页上的数据,而不用担心动态网页的数据会出现变化:

然后获取各个采集字段的具体xpath,包括房源信息、房价、地区、建面(面积)等字段的xpa,部分代码如下:

fymc=n.xpath('./div/div[1]/a/text()')[0]#房源名称
fj=n.xpath('./div/div[6]/div/span[1]/text()')[0]#房价
diqu=n.xpath('./div/div[2]/span[1]/text()')[0]#地区
mj=n.xpath('./div/div[3]/span/text()')[0]

然后我们要爬取页数要设置,可以看到页数链接明显出现变化,而且还是规律性的,所以可以构造一个循环采集指定页数的信息(也就是翻页采集),部分代码如下:

for i in range(1,6):
    url='https://nn.fang.lianjia.com/loupan/pg'+str(i)
    #print(url)

翻页采集搞定了,接下来就是数据处理,先判断采集的数据有没有空值或者缺失值,就必须使用numpy和pandas这两个模块进行数据处理,部分代码如下:

data=pd.read_csv(r'C:/Users/Administrator/Desktop/链家数据.csv',encoding='gbk')
#data.describe()#做描述性分析,判断有没有空值或者缺失值

然后查看采集的数据发现,建面面积这个字段既有中文又有数字和特殊符号,我们要对这个字段进行拆分,拆分为最大面积和最小面积,代码如下:

data['最小面积']=data['面积'].str.split(expand=True)[1].str.split('-',expand=True)[0]
data['最大面积']=data['面积'].str.split(expand=True)[1].str.split('-',expand=True)[1].str.split('㎡',expand=True)[0]
data=data.drop('面积',axis=1)

处理完采集的数据,接下来就是对数据进行可视化,可视化就用到matplotlib这个模块,我们用了三个图去可视化数据,包括折线图、饼图、条形图,部分代码如下:

#制作可视化图表
plt.figure(figsize=(10,8))
plt.suptitle("南宁房价可视化分析",fontsize=20)
plt.subplot(2,2,1)
#不同地区的房源数量--饼图
plt.title('不同地区的房源数量占比--饼图')
explode=[0,0,0,0,0.2,0]
plt.pie(x=data.地区.value_counts(),labels=data.地区.value_counts().index,
        explode=explode,autopct='%.3f%%')
plt.subplot(2,2,2)
plt.title('不同地区的房源数量--条形图')
plt.ylim(0,20)
x=data.地区.value_counts().index
y=data.地区.value_counts()
plt.bar(x=x,height=y,width=0.5)
for a,b in zip(x,y):
    plt.text(a,b+0.2,str(b),ha='center',va='bottom',fontsize=10.5,color='green')
plt.subplot(2,1,2)
plt.title('不同地区平均房价——折线图')
plt.ylim(0,30000)
qingxiu=int(data[data['地区']=="青秀区"].房价.mean())
xixiangtang=int(data[data['地区']=="西乡塘区"].房价.mean())
xingning=int(data[data['地区']=="兴宁区"].房价.mean())
liangqing=int(data[data['地区']=="良庆区"].房价.mean())
yongning=int(data[data['地区']=="邕宁区"].房价.mean())
dq=['青秀区','西乡塘区','兴宁区','良庆区','邕宁区']
mean_fj=[qingxiu,xixiangtang,xingning,liangqing,yongning]
#折线图#
plt.plot(dq,mean_fj,label='不同地区平均房价')
for a,b in zip(dq,mean_fj):
    plt.text(a,b+0.2,str(b),ha='center',va='top',fontsize=10.5)
plt.legend(loc=1,fontsize=13)
plt.show()

最后不多说了,附上完整代码:

import requests
from lxml import etree
import csv
import pandas as pd
import matplotlib.pyplot as plt
from pylab import mpl
import time
with open('C:/Users/Administrator/Desktop/链家数据.csv','w',encoding='gbk') as f:
    f.write('房源名称,房价,地区,面积\n')
    f.close()
for i in range(1,6):
    url='https://nn.fang.lianjia.com/loupan/pg'+str(i)
    #print(url)
    headers={
        'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36'
    }
    r=requests.get(url,headers=headers).content
    b=etree.HTML(r)
    c=b.xpath('/html/body/div[3]/ul[2]/li')
    try:
        for n in c:
            fymc=n.xpath('./div/div[1]/a/text()')[0]#房源名称
            fj=n.xpath('./div/div[6]/div/span[1]/text()')[0]#房价
            diqu=n.xpath('./div/div[2]/span[1]/text()')[0]#地区
            mj=n.xpath('./div/div[3]/span/text()')[0]
            with open('C:/Users/Administrator/Desktop/链家数据.csv','a',encoding='gbk') as f1:
                f1.write('{},{},{},{}\n'.format(fymc,fj,diqu,mj))
                print("数据爬取成功!")
    except:
        pass
time.sleep(20)
mpl.rcParams['font.sans-serif']=['SimHei']
mpl.rcParams['axes.unicode_minus']=False
data=pd.read_csv(r'C:/Users/Administrator/Desktop/链家数据.csv',encoding='gbk')
#数据处理,拆分面积字段为两列数据,最小面积和最大面积
#data.describe()
data['最小面积']=data['面积'].str.split(expand=True)[1].str.split('-',expand=True)[0]
data['最大面积']=data['面积'].str.split(expand=True)[1].str.split('-',expand=True)[1].str.split('㎡',expand=True)[0]
data=data.drop('面积',axis=1)
#制作可视化图表
plt.figure(figsize=(10,8))
plt.suptitle("南宁房价可视化分析",fontsize=20)
plt.subplot(2,2,1)
#不同地区的房源数量--饼图
plt.title('不同地区的房源数量占比--饼图')
explode=[0,0,0,0,0.2,0]
plt.pie(x=data.地区.value_counts(),labels=data.地区.value_counts().index,
        explode=explode,autopct='%.3f%%')
plt.subplot(2,2,2)
plt.title('不同地区的房源数量--条形图')
plt.ylim(0,20)
x=data.地区.value_counts().index
y=data.地区.value_counts()
plt.bar(x=x,height=y,width=0.5)
for a,b in zip(x,y):
    plt.text(a,b+0.2,str(b),ha='center',va='bottom',fontsize=10.5,color='green')
plt.subplot(2,1,2)
plt.title('不同地区平均房价——折线图')
plt.ylim(0,30000)
qingxiu=int(data[data['地区']=="青秀区"].房价.mean())
xixiangtang=int(data[data['地区']=="西乡塘区"].房价.mean())
xingning=int(data[data['地区']=="兴宁区"].房价.mean())
liangqing=int(data[data['地区']=="良庆区"].房价.mean())
yongning=int(data[data['地区']=="邕宁区"].房价.mean())
dq=['青秀区','西乡塘区','兴宁区','良庆区','邕宁区']
mean_fj=[qingxiu,xixiangtang,xingning,liangqing,yongning]
#折线图#
plt.plot(dq,mean_fj,label='不同地区平均房价')
for a,b in zip(dq,mean_fj):
    plt.text(a,b+0.2,str(b),ha='center',va='top',fontsize=10.5)
plt.legend(loc=1,fontsize=13)
plt.show()

相关推荐

安全教育登录入口平台(安全教育登录入口平台官网)

122交通安全教育怎么登录:122交通网的注册方法是首先登录网址http://www.122.cn/,接着打开网页后,点击右上角的“个人登录”;其次进入邮箱注册,然后进入到注册页面,输入相关信息即可完...

大鱼吃小鱼经典版(大鱼吃小鱼经典版(经典版)官方版)

大鱼吃小鱼小鱼吃虾是于谦跟郭麒麟的《我的棒儿呢?》郭德纲说于思洋郭麒麟作诗的相声,最后郭麒麟做了一首,师傅躺在师母身上大鱼吃小鱼小鱼吃虾虾吃水水落石出师傅压师娘师娘压床床压地地动山摇。...

谷歌地球下载高清卫星地图(谷歌地球地图下载器)
  • 谷歌地球下载高清卫星地图(谷歌地球地图下载器)
  • 谷歌地球下载高清卫星地图(谷歌地球地图下载器)
  • 谷歌地球下载高清卫星地图(谷歌地球地图下载器)
  • 谷歌地球下载高清卫星地图(谷歌地球地图下载器)
哪个软件可以免费pdf转ppt(免费的pdf转ppt软件哪个好)
哪个软件可以免费pdf转ppt(免费的pdf转ppt软件哪个好)

要想将ppt免费转换为pdf的话,我们建议大家可以下一个那个wps,如果你是会员的话,可以注册为会员,这样的话,在wps里面的话,就可以免费将ppt呢转换为pdfpdf之后呢,我们就可以直接使用,不需要去直接不需要去另外保存,为什么格式转...

2026-02-04 09:03 off999

电信宽带测速官网入口(电信宽带测速官网入口app)

这个网站看看http://www.swok.cn/pcindex.jsp1.登录中国电信网上营业厅,宽带光纤,贴心服务,宽带测速2.下载第三方软件,如360等。进行在线测速进行宽带测速时,尽...

植物大战僵尸95版手机下载(植物大战僵尸95 版下载)

1可以在应用商店或者游戏平台上下载植物大战僵尸95版手机游戏。2下载教程:打开应用商店或者游戏平台,搜索“植物大战僵尸95版”,找到游戏后点击下载按钮,等待下载完成即可安装并开始游戏。3注意:确...

免费下载ppt成品的网站(ppt成品免费下载的网站有哪些)

1、Chuangkit(chuangkit.com)直达地址:chuangkit.com2、Woodo幻灯片(woodo.cn)直达链接:woodo.cn3、OfficePlus(officeplu...

2025世界杯赛程表(2025世界杯在哪个国家)

2022年卡塔尔世界杯赛程公布,全部比赛在卡塔尔境内8座球场举行,2022年,决赛阶段球队全部确定。揭幕战于当地时间11月20日19时进行,由东道主卡塔尔对阵厄瓜多尔,决赛于当地时间12月18日...

下载搜狐视频电视剧(搜狐电视剧下载安装)

搜狐视频APP下载好的视频想要导出到手机相册里方法如下1、打开手机搜狐视频软件,进入搜狐视频后我们点击右上角的“查找”,找到自已喜欢的视频。2、在“浏览器页面搜索”窗口中,输入要下载的视频的名称,然后...

pubg免费下载入口(pubg下载入口官方正版)
  • pubg免费下载入口(pubg下载入口官方正版)
  • pubg免费下载入口(pubg下载入口官方正版)
  • pubg免费下载入口(pubg下载入口官方正版)
  • pubg免费下载入口(pubg下载入口官方正版)
永久免费听歌网站(丫丫音乐网)

可以到《我爱音乐网》《好听音乐网》《一听音乐网》《YYMP3音乐网》还可以到《九天音乐网》永久免费听歌软件有酷狗音乐和天猫精灵,以前要跳舞经常要下载舞曲,我从QQ上找不到舞曲下载就从酷狗音乐上找,大多...

音乐格式转换mp3软件(音乐格式转换器免费版)

有两种方法:方法一在手机上操作:1、进入手机中的文件管理。2、在其中选择“音乐”,将显示出手机中的全部音乐。3、点击“全选”,选中所有音乐文件。4、点击屏幕右下方的省略号图标,在弹出菜单中选择“...

电子书txt下载(免费的最全的小说阅读器)

1.Z-library里面收录了近千万本电子书籍,需求量大。2.苦瓜书盘没有广告,不需要账号注册,使用起来非常简单,直接搜索预览下载即可。3.鸠摩搜书整体风格简洁清晰,书籍资源丰富。4.亚马逊图书书籍...

最好免费观看高清电影(播放免费的最好看的电影)

在目前的网上选择中,IMDb(互联网电影数据库)被认为是最全的电影网站之一。这个网站提供了各种类型的电影和电视节目的海量信息,包括剧情介绍、演员表、评价、评论等。其还提供了有关电影制作背后的详细信息,...

孤单枪手2简体中文版(孤单枪手2简体中文版官方下载)

要将《孤胆枪手2》游戏的征兵秘籍切换为中文,您可以按照以下步骤进行操作:首先,打开游戏设置选项,通常可以在游戏主菜单或游戏内部找到。然后,寻找语言选项或界面选项,点击进入。在语言选项中,选择中文作为游...

取消回复欢迎 发表评论: