举国欢庆的国庆节马上就要结束了,你想好去哪里看人山人海了吗?还是窝在家里充电学习呢?说起国庆,塞车与爆满这两个词必不可少,但是如果能提前知道哪些景点爆满就不用人挤人地去凑热闹了。本文即用 Python 抓取了有关国庆出行方面的数据,希望给你的假期提供些帮助。
一开始,笔者以为要抓取出行方面的数据挺简单,直接去看看携程旅游、马蜂窝这类网站看看有没有数据抓取就好。但是实际上这些网站并没有比较好的格式化数据供我们抓取(当然或许是我没找到办法......)。但是出行肯定会查找相关的出行攻略,那么关键词就是一个突破口,可以查询百度指数来看看哪些景点被查询的次数最多,那么就可以大概知道哪些景点会爆满了。
01:统计结果
此次的统计结果只是从侧面反映景点爆满的问题,未必是完全准确的,仅供参考。此次统计的景点共有 100 个:
不出意外,桂林、三亚、泰山的搜索量都是杠杠的,这第一梯队的地方能不去就别去了,去了也是人山人海的,爆满是无疑的了。
第二梯队的搜索量也不差,日均搜索量还是上万的,谨慎行动。
第三梯队下来就可以考虑考虑,为了避免不必要的塞车与等待,建议大家还是待在家里吧......
第四梯队应该没太大的问题,建议出去溜达溜达。
都到第五梯队了,就可以放心地玩耍了。经历了那么多的烦心事,是该好好放飞一下自己了。
02:爬虫技术分析及具体实现
本次爬取过程中用的的数据工具如下:
请求库:selenium
HTML 解析:使用正则匹配
数据可视化:pyecharts
数据库:MongoDB
数据库连接:pymongo
首先是选取爬虫来源,携程与马蜂窝没有结构化的数据,我们就换一种思路。首先是想到百度指数,如图:
但是分析源代码之后,你就会发现问题了......它的数据都是以图片展示的,你不能直接获取到源码。考虑到国庆马上就要到来,我换了一个指数平台,转战搜狗指数,这个平台可以直接获取到源数据,关键是还有微信热度可以爬取。当然,你执意要使用百度指数也是有方法的,抓取到数据之后,使用图像识别来识别文中的数据即可,这里就不展开了。
关于数据清洗方面,这里筛选了数据量过小和数据量异常大的景点:
由于篇幅原因,这就只展示部分主要代码:
整篇爬虫文章分析到这里就结束了。最后祝大家假期愉快,不用写代码。
网友评论