赞
踩
国庆倒计时1天,我们即将迎来8天的小长假,相信很多小伙伴们已经提前规划国庆去哪儿?你是选择去人最少的单位加班呢?还是选择人山人海的景点观光?
如果去人最少的单位加班,一定要记得告知老板,以望升职加薪走上人生巅峰;
如果选择人山人海的景点,一定要提前查看攻略,比如下文中使用 Python 技术抓取热门景点的热力图。
金秋九月,丹桂飘香,在这秋高气爽,阳光灿烂的收获季节里,我们送走了一个个暑假余额耗尽哭着走向校园的孩子们,又即将迎来一年一度伟大祖国母亲的生日趴体(无心上班,迫不及待想为祖国母亲庆生)。
那么问题来了,去哪儿玩呢?
百度输了个“国庆”,出来的第一条居然是“国庆去哪里旅游人少”。
于是我想到可否通过旅游网站的景点销量来判断近期各景点流量情况呢?本文按去哪儿网景点页面,得到景点的信息。
1.百度的地图API和echarts
本次主要抓取的内容是数据,因此我决定用图表来输出抓取的数据,也就意味着我要用爬取的景点销量以及景点的具体位置来生成一些可视化数据。
在这里使用的是百度的地图API和echarts,前者是专门提供地图API的工具,后者是数据处理居家旅行的好伙伴。
那么API是什么?API是应用程序的编程接口,就好像插头与插座一样,我们的程序需要电,插座中提供了电,我们只需要在程序中写一个与插座匹配的插头接口,就可以使用电来做我们想做的事情,而不需要知道电是如何产生的。
引入数据后的百度热力图
而具体流程如下,好比出书的过程,想要将完结的小说出书,首先要通过出版社的出版服务,提供正文内容和封面设计图,将保存好的 word 文本和封面图发给出版社,由此得到一本书。在此过程中,并不需要了解出版社印刷、装订的过程。
通过API对接的开发者与服务商
2.确定输出文件
百度地图提供了很多API使用示例,有HTML基础,有JS基础就可以尝试改函数了。仔细观察源代码,可以知道热力图的生成主要的数据都存放在points这个变量中。
这种[{x:x,x:x},{x:x,x:x}]格式的数据,是一种json格式的数据,由于具有自我描述性,所以比较通俗易懂,大概可以知道这里的三个值,前俩个是经纬度,最后一个应该是权重。
也就是说,如果我希望将景点的热门程度生成为热力图,我需要得到景点的经纬度,以及它的权重,景点的销量可以作为权重,并且这个数据应该是json格式的呈现方式。echarts也是一样的。
3.爬取数据
其实这次的爬虫部分是比较简单的。
分析网址(去哪儿景点)→爬取分页中信息(景点经纬度、销量)→转为json文件。
分析去哪儿景点页的网址可得出结构:<http://piao.qunar.com/ticket/list.htm?keyword=搜索地点®ion=&from=mpl_search_suggest&page=页数>
这次没有用正则来匹配内容,而使用了xpath匹配。
def getList():
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。