网络爬虫与机器学习算法在城市分析中的应用(python)


互联网的发展使得搜索引擎成为了人们获知信息的重要渠道之一,而如何从网上的海量数据中探寻到我们需要的数据成为了一个重要的技能,最近对于即将毕业的大学生来说正是需要考虑选择定居城市的时期,成都市地处西南经济中心,人口聚集度高,是关注的重点城市,所以我便利用爬虫技术爬取成都市的相关信息,进行美食数据可视化,并用监督学习算法(线性回归,KNN)和非监督学习算法(神经网络)进行租房价格的预测。


成都美食数据分析

1.1美食数据获取

爬虫过程
网络爬虫是一种按照一定的规则,自动地抓取网页上的信息的程序或者脚本,成都的美食信息我们采用从美团网上爬虫获取,因为美团网是动态网页,需要通过解析接口或用Selenium爬取,所以这里我使用通过解析接口的方法来爬取数据。

我们定义了三个python程序来爬取成都美团的店铺信息:

①run.py
爬虫运行的主要启动程序,调用spider.py里面的MeituanSpider类进行爬虫。

②settings.py
爬虫全局变量设置的程序,设置爬虫的 HTTP请求标头,这里我设置了两个请求头,避免其中一个失效,设置请求头的目的是为了防止美团网站发现爬虫而封掉ip,导致爬虫失败。爬虫完毕后数据存储在meituan_ChengDu_Restaurants2文件里。

③spider.py
利用parse函数发送get请求,用网页真实的URL,得到HTML页面,然后用关键词搜索进行网页信息的抓取,得到如’店铺名称’,'页面id’等我们所需的信息。其中利用__init__的函数接受参数保存数据的格式,并将爬虫获取到的数据保存为为csv的格式。最后使用run函数来启动爬虫,开始爬取商家信息,设置爬取的时间间隔,因为如果爬取数据的操作过于频繁的话,会被网页认为是爬虫而被禁掉。为了让代码看起来更加的简洁,上述的函数采用封装编码思想,都封装在一个类中,类名为 MeituanSpider,实现了代码的复用。

爬虫完成后获得了4448个店铺信息,数据如下图所示:
在这里插入图片描述
补充内容:爬虫程序,这里最重要的一步是要爬取网页的真实url(http://api.meituan.com/group/v4/deal/select/city/59/cate/1 sort=solds&hasGroup=true&mpt_cate1=1&offset={0}&limit={1})
参数:59—城市id(59代表成都)
limit:每页的店铺数量(我自定义的是30)
offset:翻页参数

1.2美食数据处理

爬虫得到29个属性,但我们探寻数据信息不需要这么多属性,所以我们选择其中几个属性并查看选择后的数据信息:
在这里插入图片描述
在这里插入图片描述
虽然有些属性有缺失值,但对我们后续数据可视化处理影响不大,不做处理。
后续为了查看各区美食数量排名添加新属性(区)

df['区'] = df['详细地址'].str.findall('(.*?区)').str.get(0)

在这里插入图片描述

1.3 美食数据可视化

店铺名称词云图

通过Python中的Jieba模块来实现分析过程中对词频和关键词的统计。Jieba分词是一个中文分词组件,将“店铺名称”属性利用jieba.analyse.extract_tags函数提取关键词的文本,并返回每个关键词出现的权重,分析出各种词出现的频率后使wordcloud 模块绘制词云图。可以看出,火锅、自助等出现的概率大,说明成都地区的饮食习惯偏爱辛辣的食物。这对于爱吃辣的我来说是个吸引点,选择饮食习惯相同的地区可以增加定居者的幸福感。
在这里插入图片描述
图1-1 关键词占比图
在这里插入图片描述

图1-2 店铺信息词云图

美食种类占比图
统计”类别“中不同餐厅的食物种类的数量,画出美食种类的占比的直方图,从图中可见四川火锅店铺数量是最多的,多达1253家店铺与火锅有关,符合成都这个城市的特点——爱吃火锅,而排名前十的食物中有4个就与自助相关的,看来自助餐还是很受广大成都百姓的欢迎的。
在这里插入图片描述
图1-3 美食种类直方图

地区餐厅直方图

画出不同区中的餐厅数量占比渐变值方图,从图可知武侯区和锦江区餐厅最多,新津区的最少,之后选择租房的地区可以优先选择武侯区,尽量避开数量排名靠后的几个区。
在这里插入图片描述
图1-4 地区餐厅数量直方图

地区人均价格折线图

新津区的人均价格最高,且餐厅数量较少,所以租房区域先排除新津区,武侯区虽然餐厅数量多,但人均价格也高,所以还需考虑一下,温江区虽然餐厅数量少但人均价格较低,纳入租房选择区域名单。
在这里插入图片描述
图1-5 地区人均价格折线图

成都美食据集地图

pyecharts 模块中的 Geo 地理坐标系组件用于地图的绘制,支持在地理坐标系上绘制散点图,利用geo 函数画出将上述的餐厅数量在成都地图上的分布,可见大部分餐厅都集中在成都的中心区域,而周围区域的餐厅数量较少,且很分散。
在这里插入图片描述

成都租房数据分析

2.1租房数据获取

利用八爪鱼进行租房数据的获取得到的数据很干净,不似爬虫那样在爬取数据的前期就需要考虑数据的清洗,八爪鱼获取的数据标准、规范,唯一的缺点是爬取速度过慢,这里我爬取了1420条链家出租房的数据,花了5个多小时。数据存储在“链家租房房源信息采集爬虫.csv”文件中。

2.2 租房数据预处理

缺失值处理

读取“链家租房房源信息采集爬虫.csv”文件中的数据后,打印出各属性的缺失值的个数,发现除了“地铁”属性外其他属性缺失值都很少,“地铁”属性缺失值较多,所以首先去除“地铁”属性,然后寻找各属性缺失值进行删除,还余1418个数据,说明只有两个数据有缺失值,将这两个缺失值数据删除。
核心代码:

jieba.analyse.extract_tags
data=pd.read_csv('C:/Users/easterding/Desktop/租房价格预测/链家租房房源信息采集爬虫.csv',encoding='gbk')
data.isnull(
  • 1
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值