前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python大佬抓取了全国旅游景点,告诉你去哪嗨

Python大佬抓取了全国旅游景点,告诉你去哪嗨

作者头像
Python进阶者
发布2019-10-15 15:49:02
1.7K0
发布2019-10-15 15:49:02
举报
文章被收录于专栏:Python爬虫与数据挖掘

经常听到别人说“世界那么大,我想去看看”。在有机会走出国门之前,还是先把咱大中国走一转吧。都知道中国地广人不稀,旅游资源非常丰富,古代的,抗战的,山川,河流,大海等等,在选择目的地的时候非常纠结,不知道去哪更好。为了以后不在纠结,笔者打算好好扒一扒全国的旅游景点分布。话不多说,进入正题。

01

数据抓取

去哪儿网有着非常丰富的旅游信息,不但几乎涵盖了全国所有景点,而且使用去哪儿网购买景区门票的人也非常多,所以笔者将爬取去哪儿网全国32个省的所有景点数据。(没有抓取中国香港和中国澳门的数据,这边的景点并没有分5A,4A)

去哪儿网的门票这一服务暂时还没有开通api服务,所以只能对网页解析爬取。要抓取的数据有:景点名,景区等级,地点,景区简述,价格,销量以及热度。

将需要的数据进行定位,一层一层解析,就可以把所需的全部内容抓取下来了。需要注意的是,不能爬取的太多频繁,笔者的IP就被封了几次。。。对于这种情况,可以加一个代理池。(可能笔者代理池做的比较辣鸡,导致加了代理以后抓取的速度直线下降)。

代码语言:javascript
复制
for i in s:
    inf = {}
    try:
        inf['level'] = i.find('span', class_='level').text[0]
    except Exception as e:
        inf['level'] = '0'
    try:
        inf['price'] = i.find('span', class_='sight_item_price').find('em').text
    except Exception as e:
        inf['price'] = ''
    try:
        inf['name'] = i.find('a', class_='name').text
    except Exception as e:
        inf['name'] = ''
    try:
        inf['num'] = i.find('span', class_='hot_num').text
    except Exception as e:
        inf['num'] = ''
    try:
        inf['add_pro'] = i.find('span', class_='area').find('a').text.split('·')[0]
        inf['add_city'] = i.find('span', class_='area').find('a').text.split('·')[1]
    except  Exception as e:
        inf['add_pro'] = i.find('span', class_='area').find('a').text
        inf['add_city'] = i.find('span', class_='area').find('a').text
    try:
        inf['hot'] = i.find('span', class_='product_star_level').find('em').get('title').split(':')[1]
    except  Exception as e:
        inf['hot'] = ''
    try:
        inf['descri'] = i.find('div', class_='intro color999').text
    except Exception as e:
        inf['descri'] = ''

并不是每一个景点的信息都是全的,所以笔者加了一个try/except进去,虽然代码有变长,但是整个程序变得更加健壮呀。最终,一共抓取了41611条景点信息。

02

数据分析

5A级景区

上图为5A景区的销量排行,可以看出秦始皇兵马俑遥遥领先,是第二名长隆欢乐世界的5/3倍。让笔者没有想到的是欢乐谷游乐园等在前二十名中占了六个席位,所以对于那些想发展旅游业但是没有美丽风景或者历史古迹的城市而言,大力发展游乐园行业是一个不错的选择。广州长隆就是一个鲜活的例。

江苏省是全国5A级景区最多的一个省,有41个之多;其次是浙江省和广东省有21个。总体而言,东部地区的5A景区数量是远高于西部的,虽然西部的美景非常多,但是整体经济不行,对景区的开发力度不够,拉了不少后退。

如果大家想去人少景美的地方,可以参考上图。比如武汉的东湖磨山,红旗渠,野三坡等等(其实笔者都木有听过。。。)虽然它们的销量低,但好歹也是AAAAA级风景区。

4A景区

在4A景区里,成都熊猫基地的销量是最高的,大熊猫最为国宝,这吸引力真是杠杠的呀。和5A景区一样,欢乐谷游乐园等占了四成,我想这就是大南京虽然是六朝古都,又是中华民国的首都,可是景区无论销量还是人气都不高的原因把。。。强烈要求在南京弄个大型游乐园!!!

在上图中可以看到山东省是4A景区最多的省,有167个之多。而浙江省,江苏省,广东省,河北省,四川省,安徽省的4A景区数量均超过了100。4A景区最少的省是西藏,居然只有6个?!

3A景区

3A景区销量最高的是竹林长寿山景区,但也只有1326,在4A景区的中上游。

山东省的3A景区数量全国第一,高达211个,而河南省,安徽省,辽宁省,黑龙江省,新疆省3A景区均在100个以上。

综合对比

从各等级景区人气值可以看出,人气值为1的5A景区占了将近三成,而4A和3A景区连一成都没有;相反,人气值为0的3A景区差不多有六成,看来这个3A景区不是一点点水呢。。。5A景区也并非每一个都称得上5A这个名号,不然也不会有近两成人气值为0。

从各级景点的箱型图可以看出,5A景区人气值是遥遥领先的,整体在0.7以上。4A景区人气均值中位数在0.7左右,不过高于0.7的景区实在太少了。3A景区就更不用说,整体人气值非常低。

从景区销量箱型图可以看到:5A景区的销量是远超过了4A和3A景区,5A景区的3/4分为点达到了400,而4A景区的仅为82;而4A景区的箱型图和3A的非常类似;看来大家对4A景区和对3A景区兴趣都一致的不大呢。

将所有景点的概述用R生成了一个词云图:位于,文化,休闲,旅游,体验,景区,公园,历史,娱乐等等这些词是不是很熟悉呢。看来商家对景区的概括都差不多呢。

对比完各级景点,下面来给各位看官排排雷。

上图是4A级景区销量排名的最后20位,全中国有2193个4A级景区,这20个还排在最后,在对比一下大家对4A级景区的人气评分,想想还是不要去了。。。

首先,如果说3A级景区不太推荐大家去游玩,因为人气值实在低的可怕;那上面列出的这20个景点那就是完全不建议游玩了。全国一共1933个AAA级景区,这20个排在最后,可想而知去了会多么震惊了。。。

高德地图可视化

高德地图的API真的非常好啊,它提供各种和地图有关的功能。其中有一项是WEB服务里的地理/逆地理编码。将去哪儿爬取到的景点地址数据通过地理编码转变为对应的经纬度。比如:北京市方恒国际中心A座将它经过地理编码后其经纬度为116.480656,39.989677。它的URL:

代码语言:javascript
复制
https://restapi.amap.com/v3/geocode/geo?address=地址&output=XML&key=<用户的key>&city=城市

其中output是输出个格式,一共有两种,XML和JSON;address是要地理编码的地址,city是所在的城市。

word is cheap,show me the code

代码语言:javascript
复制
for i in range(len(name)):
    x = pandas.DataFrame()
    t={}
    add = name[i]
    chengshi=city[i]
    parameters = { 'address': add, 'key': '9c2084d0d553d8152ad0debe26375a4c','city':chengshi }
   html = requests.get('https://restapi.amap.com/v3/geocode/geo', params=parameters).json()
    try:
        t['jingwei'] = html['geocodes'][0]['location']
    except IndexError:
        t['jingwei']='0,0'
    finally:
        t['n'] = name[i]
        t['level']=level[i]
        t['pro']=pro[i]
        t['city']=city[i]
        x = x.append(t, ignore_index=True)
        x.to_csv('543.csv', encoding='utf-8', index=False, mode='a', header=False)

全国各级景区分布图

全国各级景区分布六边形热力图

在六边形热力图中可以看到,北京是一个旅游资源及其丰富的城市,如果大家只想去一个城市转一转,可以优先选择北京噢。重庆,广州,天津,苏州等也是不错的选择噢。

全国景区分布热力图

最后来看看笔者的家乡,湖南。如果大家去湖南游玩的话,长沙一定要去!其次张家界,永州,怀化和郴州也值得一去。

~~

--------- End ---------

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-11-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Python爬虫与数据挖掘 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
灰盒安全测试
腾讯知识图谱(Tencent Knowledge Graph,TKG)是一个集成图数据库、图计算引擎和图可视化分析的一站式平台。支持抽取和融合异构数据,支持千亿级节点关系的存储和计算,支持规则匹配、机器学习、图嵌入等图数据挖掘算法,拥有丰富的图数据渲染和展现的可视化方案。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档