选择”开发者技术前线 “星标🔝,内容一触即达。点击原文更多惊喜!
开发者技术前线 汇集技术前线快讯和关注行业趋势,大厂干货,是开发者经历和成长的优秀指南。
历史推荐
点个在看,月薪几万!
The following article is from 51CTO技术栈 Author 崔皓
点击“开发者技术前线”,选择“星标🔝”
在看|星标|留言, 真爱!
祖国 70 周年的华诞一天天临近,各行各业都在为祖国母亲庆祝生日。作为一个 IT 人,也想贡献一份绵薄之力。
来自:51CTO栈 | 作者:崔皓 | 图片来自 Pexels
今天一起来看看,如何利用网络爬虫生成国庆期间的旅游热点图吧。
需求构思
制作一张旅游热点图,我们想要达到的效果是,在一张中国地图上面标注出旅游热点。
构思图
首先,我们要找一个数据源能够获取全国旅游信息。这里有一个思路就是订票信息,哪些景点的订票比较多,那么这些景点所在的城市就越热门。类似的售票网站比较多,例如:携程,去哪儿,途牛旅游之类的。
然后,需要分析网站上面的票务数据,将我们感兴趣的旅游热点信息爬取下来。分析信息的重点是针对网页 HTML 信息的解析。
之后,将分析完毕的信息按照一定格式保存到本地,由于下载的信息可能和最终展示信息存在偏差,所以需要做一些数据清洗和数据聚合的操作。
最后,将整理好的信息输入到地图上显示出来,这也是最后展示的环节。这里可以选择对外展示的方式,例如:点图,线图,或者热力图。
网站分析
全局预览
找了一圈旅游网站以后,发现在“去哪儿”的门票页面中,有一个对旅游景点热度的展示信息。
网页会根据不同类型景点(自然风光,文化古迹等)进行查询,查询的结果会显示景点名称,景点热度和城市信息。
如果我们将这些景点对应的区域的热度进行汇总,就可以知道哪些区域对应的景点热度了。
针对景点主题做了分类,在展示的列表中,有景点名称,景点级别,所在省市,以及热度。其中省市和热点是我们关心的数据。
URL 分析
URL 分析图
打开 Chrome 的开发者工具来看看 HTML 页面的结构。URL 的规律很容易能够看明白:
Keyword 就是“热门景点”,它是个常量,每次请求填写这个就行了。
Subject 是景点分类,例如:自然风光,游乐场,文化古迹等等。这个需要一一罗列出来,是在一个变量后面用数组存放。
页面元素分析
通过 Chrome 开发者工具中的元素选择器,可以清楚地看到元素的 HTML 标签。
获取了列表元素之后,再来看看每一项旅游纪录中的值如何获取。其内容放在”sight_item”的 div 中。
爬虫准备
因此,Pyecharts 可以理解为用 Python 来实现的 Echarts 程序,可以在 Python 上面运行,并且提供良好的地理信息展示。
另外 Pyecharts 的地理展示功能比较强大,这点也是我们需要利用的。
针对 HTML 的解析我们使用了 BeautifulSoup。它是一个可以从 HTML 或 XML 文件中提取数据的 Python 库,它能够通过你喜欢的转换器实现惯用的文档导航,查找,修改文档的方式。
爬虫编码
爬取旅游热点信息
开始准备必要的文件和引入组件包。
组合变量 URL 并且做网络请求,请求不成功进行重试。
下载 HTML 以后对其进行解析,找到旅游热点列表,列表项,分析具体旅游信息。
把分析完的信息保存到 csv 文件中。
网络请求
HTML 解析
读写 csv
在请求头中伪装浏览器
错误重试,等待时间
在文件的表头,我们分别定义了,“区域”,“名称”等和景点相关的字段。在文件生成的时候就准备好这些列,等填入数据以后,可以方便查看。
另外,我们的开始搜索的页面,使用 page=1,之后会解析页面中的“next”按钮,完成翻页的功能。
下载 HTML,并且转换成 SOUP 对象。
找到旅游景点的列表。找到 div 的 id 为‘search-list’的元素。用 soup 的 find 方法找到它。
针对景点的项目进行遍历。在‘search-list’元素下面,通过 findAll 方法找到 class 是‘sight_item’的项目,并且对其进行遍历。
解析具体景点信息:名称,区域,省市,热度,地址等等。
csv 看上去比较凌乱,把文件通过 xls 打开,看看格式化以后的热点信息:
旅游热点地图展示
其次,我们需要装载 csv 文件。虽然我们下载了很多信息,但是对于我们最重要的其实是省市和热点信息。因为我们最后展示出来的就是,哪个城市是旅游的热点。
将一些地图中无法识别的地点,以及一些没有热度值的脏数据过滤掉,就可以将生成的城市,热度列表传给展示函数了。
结果分析
先看看哪些区域是大家比较喜欢的旅游目的地,如下图:
从图上可以看出北京,沿海地区(福建,广州),江浙地区,甘肃地区是国庆期间比较热门的景点。中部地区的武汉,由于军运会将至,也成为了旅游的热门城市。
再来看看,TOP 20 的旅游热点城市,如下图:
TOP 20 的 5A 旅游景点:
总结
十一你有出游计划吗?欢迎底部留言讨论。
---END---
选择”开发者技术前线 “星标🔝,内容一触即达。点击原文更多惊喜!
开发者技术前线 汇集技术前线快讯和关注行业趋势,大厂干货,是开发者经历和成长的优秀指南。
历史推荐
点个在看,月薪几万!