您的位置:网站首页 > 旅游攻略 > 正文

Python爬取马蜂窝出行排行榜原来最值得去的是这个地方!

类别:旅游攻略 日期:2018-10-19 6:25:57 人气: 来源:

  蚂蜂窝中的所有城市、景点以及其他的一些信息都有一个专属的5位数字编号,我们第一步要做的就是获取城市(直辖市+地级市)的编号,进行后续的进一步分析。

  以上两个页面就是我们的城市编码来源。需要首先从目的地页面获得各省编码,之后进入各省城市列表获得编码。

  游记数量TOP10数量基本上与我们日常所了解的热门城市相符,我们进一步根据各个城市游记数量获得全国旅行目的地热力图:

  看到这里,是不是有种似曾相识的感觉,如果你在朋友圈晒的足迹图与这幅图很相符,那么说明蚂蜂窝的数据与你不谋而合。

  最后我们看一下大家对于各个城市的印象是如何的,方法就是提取标签中的属性,我们将属性分为了休闲、饮食、景点三组,分别看一下每一组属性下大家印象最深的城市:

  看来对于蚂蜂窝的用户来说,厦门给大家留下的印象常深的,不仅游记数量充足,并且能从中提取的有效标签也非常多。重庆、西安、成都也无悬念地给吃货们留下了非常深的印象,部分代码如下:

  我们提取了各个景点评论数,并与城市游记数量进行对比,分别得到景点评论的绝对值和相对值,并据此计算景点的人气、代表性两个分数,最终排名TOP15的景点如下:

  蚂蜂窝网友对于厦门真的是情有独钟,鼓浪屿也成为了最具人气的景点,在城市代表性方面西塘古镇和羊卓雍措位列前茅。暑假之际,如果担心上排的景点人太多,不妨从下排的景点中挖掘那些人少景美的旅游地。

  最后我们看一下大家最关注的的与吃相关的数据,处理方法与PART2景点数据相似,我们分别看一下最具人气和最具城市代表性的小吃。

  出乎意料,蚂蜂窝网友对厦门果真爱得深沉,让沙茶面得以超过火锅、烤鸭、肉夹馍跻身最具人气的小吃。

  在城市代表性方面,海鲜的出场频率非常高,这点与大(ben)家(ren)的认知也不谋而合,PART2与3的部分代码如下:

  看到现在网络上大多讲的都是requests、scrapy,却没有说到爬虫中的神器:aiohttp

  既然已经有requests了,那为什么还要说aiohttp了?重点来了,aiohttp是异步的。在python3.5中,加入了asyncio/await关键字,使得回调的写法更加直观和人性化。而aiohttp是一个提供异步web服务的库,asyncio可以实现单线程并发IO操作。

  requests写爬虫是同步的,是等待网页下载好才会执行下面的解析、入库操作,如果在下载网页时间太长会导致阻塞,使用multiprocessing或者threading加速爬虫也是一种方法。

  我们现在使用的aiohttp是异步的,简单来说,就是不需要等待,你尽管去下载网页就好了,我不用傻傻的等待你完成才进行下一步,我还有别的活要干。这样就极大的提高了下载网页的效率。

  另外,Scrapy也是异步的,是基于Twisted事件驱动的。在任何情况下,都不要写阻塞的代码。阻塞的代码包括:

  访问文件、数据库或者Web产生新的进程并需要处理新进程的输出,如运行shell命令执行系统层次操作的代码,如等待系统队列代码实例这里是使用aiohttp的一个爬虫实例

  需要注意的是,你需要时刻在你的代码中使用异步操作,你如果在代码中使用同步操作,爬虫并不会报错,但是速度可能会受影响。

  其他异步库因为爬虫不仅仅只有下载这块,还会有操作数据库,这里提供两个异步库:aioredis、motor

  本文仅仅介绍了aiohttp作为Client的用法,有兴趣的朋友可以去研究下作为Server的用法,同样很强大。

  今天的文章分享到此结束,希望本次分享对正在学习Python的你有所帮助,文章部分素材来源网络,如有侵权,请联系删除。

  我做开发几年的时间,如果大家对于学习Python的学习方法,学习线以及你不知道的疑问,都可以随时来问我,大家可以加我的交流学习群,群内有学习教程以及开发工具。延安特大凶杀案

  

0
0
0
0
0
0
0
0
下一篇:没有资料

相关阅读

网友评论 ()条 查看

姓名: 验证码: 看不清楚,换一个

推荐文章更多

热门图文更多

最新文章更多

关于联系我们 - 广告服务 - 友情链接 - 网站地图 - 版权声明 - 人才招聘 - 帮助

CopyRight 2002-2012 技术支持 FXT All Rights Reserved