社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

用Python分析国庆旅游景点,看你去对地方了吗?

马哥Linux运维 • 5 年前 • 701 次点击  

来源:裸睡的猪

ID:IT--pig

作者:猪哥

一、目标

使用Python分析出国庆哪些旅游景点:好玩、便宜、人还少的地方,不然拍照都要抢着拍!

二、获取数据

既然做数据分析肯定要先搞到数据,最开始猪哥在一些官方网站查找旅游信息,毕竟官方的数据可信度高点, 但我一无所获,有点失望!

然后寻找其他替代方案:爬取出行网站的旅游景点售票数据,这样也可以反映出旅游景点的热度!

猪哥首先想到 去哪儿,这里必须要安利一波去哪儿,同样的酒店同样的房间,去哪儿价格基本都是最低,所以猪哥也用的最多!

选好学习对象,那我就开始吧!

注⚠️:本教程仅用作学习交流,如有侵害任何人权益,请联系猪哥删除!

1.爬取单页数据

我们可以在哪去儿的门票页(http://piao.qunar.com/ticket/list.htm?keyword=)搜索:**国庆旅游景点**,就可以看到推荐的景点的一些信息,如:名称、地区、热度、销量、价格、等级、地理信息等等,信息应该说是比较全,良心!

然后按下F12打开浏览器调试窗口,查找加载数据的url(翻页就可以看到)

竟然直接返回了json数据,真是太方便了


最后使用requests库写一个get请求就可以了


这样一页数据就抓取下来了,是不是很简单?

这里说下去哪儿门票页抓取数据还是很简单,不需要登录、不需要代理 、甚至不需要header也可以成功,后面批量抓取页没出现限制,相对于淘宝来说简单了许多!

2.提取有效信息

既然数据拿到了,那就看看数据结构,然后提取自己想要的属性吧

这里猪哥提取了:id、名称、星级、评分、门票价格、销量、地区、坐标、简介这些信息,基本有效信息都保存起来!

3.保存到excel

需要的数据提取出来之后,我们就可以将他们保存起来。这里我们使用pandas库保存excel文件。

没有安装pandas库的同学安装一下

pip install xlrd
pip install openpyxl
pip install numpy
pip install pandas

这里单页数据的处理就完成了,爬取、解析、保存三步走~

4.批量爬取

批量爬取也很简单,先找分页数据,多点几下页数比较不同参数就能看出来


经过一会的分析,我们便可以看出参数 page 就是分页参数了,这样我们在外层写一个for循环,把页数传入就可以实现批量爬取


那个36是我在网页上看到了,当然也可以实现自动判断是否爬取完成,只要判断每次返回的条数即可!

看看批量爬取的效果

三 、分析数据

数据都下载完毕后,就要思考如何去利用分析这些数据了,猪哥简单做了几个分析:

  1. 景点门票销量排行分析

  2. 景点门票销售额排行分析

  3. 各省各等级景点数分析

  4. 景点销量热力图分析

  5. 推荐景点分析

我们使用的可视化库仍然是:pyecharts库 ,更多维度分析等待你去思考~

1.景点门票销量排行分析

我们先来分析下景点门票销量排行

我们创建了一个透视表,然后根据销量排序!最后生成柱状图,一起来看看效果:

我们可以看到迪士尼门票销量排第一

2.景点销售额排行分析

销售额=单价*销量,我们可以将每行的price和sale相乘算出销售额

我们将得到的销售额数据放回df中,然后再排序

迪士尼真是吸金厉害!!!

3.各省各等级景点数分析

由于时间原因,该项分析暂未完成,本想分析下每个省每个等级的景点有多少个,但是由于时间原因暂未完成,感兴趣的同学可以下载源码自己试试 ,就当课后作业叭~

4.景点销量热力图分析

之前我们也做过很多热力图,都是用的pyecharts库,今天我们来点不一样 的,我们使用百度地图开放api(免费)做一个热力图,你首先要做的就是申请一个百度地图开放平台的应用,操作很简单,如何申请可以 直接百度或者看看这篇文章:https://jingyan.baidu.com/article/363872eccda8286e4aa16f4e.html

需要注意的是:在申请应用的时候类型一定要选浏览器

然后你就可以下载一个百度热力图的demo的html,在html中把ak码换成自己的。

换完ak码就要换json数据了,我们先生成和默认数据一样格式的json数据,然后再替换掉

最后来看看效果叭,动态地图支持放大缩小,可仔细查看各省、市、区景点热力图

5.推荐景点分析

应该推荐怎样的景点呢?猪哥认为是:高评分、销量少、价格便宜

推荐系数和评分成正比,和销量、价格成反比,所以猪哥设计了一个最简单的算法:

瞎推荐系数=评分/(销量价格) * 1000

来看看这个简易的推荐算法得出的结果

可以看到在这个瞎推荐TOP20中国外景点很多(尤其是日本),确实国内到国庆了哪里其实人都是挺多的!

如果你觉得我设计的推荐算法太low了,可以自己思考下如何设计更合理,然后自己动手调试,期待看到不一样的结果!

源码地址:https://github.com/pig6/qunar_spider

Python课程全新升级,全栈、web、数据分析、爬虫、AI全新上线。网络班开班倒计时2天,120天冲击年薪30万,改变速约~~~~


Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/46375
 
701 次点击