找回密码
 加入慢享
猜你喜欢
旅行常客论坛

五一黄金周|大数据告诉你,近期最受欢迎的景点都在这里!

[复制链接]
发表于 2021-4-27 15:44:04 | 显示全部楼层 |阅读模式
本文作者:王玉婷,中南财经政法大学金融学院

本文编辑:刘子艳

技术总编:戴   雯

导 言
五一黄金周马上就要来了,与家人朋友外出旅行正合适不过了。可是没灵感?不知道去哪才好?那下面我们就前往哪儿网(网址为https://www.qunar.com/,看看在出游的黄金月,哪些城市、哪些景点、哪些旅游主题最吸引人!为你的下一次旅行提前做好计划攻略吧~~~
01
爬虫思路

我们来到去哪儿网的境内门票页面(网址为https://piao.qunar.com/),找到【全国热门城市】板块,如下图所示。尝试点击各个热门城市,比如“北京”,可以发现每个热门城市是一个单独的页面,其url精简后为:

https://piao.qunar.com/ticket/list.htm?keyword=%E5%8C%97%E4%BA%AC

其中keyword参数的值为“北京”的url编码。

进入到具体的城市页面,比如“北京”,我们所需要的景点名称name、景点价格price、景点门票月销量sales、景点主题theme都在此页面上,如下图所示。进一步发现,各城市中不同的景点主题也有不同url,比如“北京”的“文化古迹”的精简url为:https://piao.qunar.com/ticket/list.htm?keyword=%E5%8C%97%E4%BA%AC&subject=%E6%96%87%E5%8C%96%E5%8F%A4%E8%BF%B9&page=1

其中subject参数的值为“文化古迹”的url编码。

这样,爬虫的思路就非常清晰了:

  1. 构造热门城市的url,获取各个城市景点主题;
  2. 构造各个城市具体的景点主题url,使用循环翻页爬取;
  3. 将各城市的景点数据合并,数据结构如下图所示:

爬虫程序换汤不换药,限于篇幅,这里不再介绍了,感兴趣的朋友可以在Stata and Python数据分析公众号后台对话框内回复关键词“ 去哪儿 ”,您将获得:

  • 去哪儿完整爬虫程序

  • 爬虫结果xlsx文件和dta文件(后续作图使用的数据集均为HotCities.dta)

  • 可视化作图程序

02
三月最受欢迎的景点你去了吗?
以三月为例,去哪儿旅行线上门票热门城市销售情况如下图所示。三亚、北京、上海遥遥领先,占14个热门旅游城市3月门票销量的65.3%。三亚和北京作为传统旅游大省,门票销量近60000人次,根据去哪儿网展示的门票价格计算,三亚、北京本月门票收入分别为人民币875万元和330万元,考虑到游客带来的交通、住宿、饮食消费,旅游拉动经济果然名不虚传! 

上图的Stata作图程序如下: 

*pic1use HotCities,clear //HotCities.dta是爬取后合并的文件,包括14个热门城市的所有景点信息gen TotalSale = (sales * price)/10000collapse (sum) sales TotalSale,by(city)replace TotalSale= int(TotalSale)gsort -sales encode city,gen(x_axis)twoway (bar sales x_axis, ///  xtick(1(1)14) xlabel(1 2 3 4 5 6 7 8 9 10 11 12 13 14, valuelabel) ///  xtitle("cities") fcolor("purple%40") ytitle("人次",axis(1) placement(north))) ///    (scatter TotalSale x_axis, ///  yaxis(2) m(T) mc(midblue) lc(midblue) sort(x_axis) lwidth(0.5) c(l) mlabel("TotalSale") mlabcolor(black)  ///  ytick(0(200)800,axis(2)) ylabel(0(200)800,axis(2)) ytitle("万元",axis(2) placement(north)) legend(on)) graph export pic1.jpg,as(png) replace

既然如此,我这就去三亚!——别着急,让我们再来看看热门城市的代表旅游项目,跑去三亚找游乐园可不是一个明智的选择哦~不出所料,三亚的旅游项目中,自然风光占据了一大半(海滨、海岛、阳光和沙滩,妙不可言呀~);北京和西安作为华夏古都,能让你在朱红的宫墙、深深的庭院里感受历史的车轮、深刻体会中华文化的深远悠长;被称为魔都的上海竟以上海迪士尼乐园“一己之力”跃居前三。令人意外的是,网红城市杭州、成都和武汉的成绩并不亮眼,看来还需要着力培养自己独特的旅游文化和旅游项目才行。 

上图的Stata程序如下: 
*pic2use HotCities,clearcollapse (sum) sales,by(city theme)gsort city -salesbysort city: keep if _n == 1gsort -salesreplace theme = "迪士尼乐园等活动" in 3gen x_axis = _n //生成x轴的数值*为不同景点主题生成不同的颜色gen colors = "bluishgray"replace colors = "midgreen" in 2replace colors = "cranberry" in 3replace colors = "gold" in 4replace colors = "sand" in 5levelsof theme,local(the)local a = 1foreach i in `the'{dis "`i'"local color = colors[`a']local bar_`a' = `"bar sales x_axis if theme == "`i'",fcolor("`color'")"'local a = `a' + 1}*作图twoway (`bar_1') (`bar_2') (`bar_3') (`bar_4') (`bar_5' ///xtick(1(1)14) xtitle("cities") ///xlabel(1 "三亚" 2 "北京" 3 "上海" 4 "西安" 5 "苏州" 6 "杭州" 7 "成都" 8 "武汉" 9 "重庆" 10 "深圳" 11 "广州" 12 "厦门" 13 "青岛" 14 "大连") ///   legend(label(1 "城市观光") label(2 "文化古迹") label(3 "游乐场") label(4 "自然风光") label(5 "迪士尼乐园") position("1")))graph export pic2.png,as(png) replace

令人激动的时刻到了,到底哪些景点最受人欢迎呢?如下图所示,分别列出了14个热门旅游城市门票销量最高的景点。一眼望去,上海迪士尼乐园“居高临下”、睥睨众景点,看来大家都是“迪士尼在逃公主”呢 ^_^ 。北京故宫、西安秦始皇陵兵马俑高居【文化古迹】之首,谁不想去一次凝聚千年皇权的故宫、看一看横扫六合、一统天下的兵马俑呢。

上图的Stata作图程序如下: 
*pic3use HotCities,cleargsort city -salesby city: keep if _n == 1gen x_axis = _n*生成值标签forvalues i = 1/14{local y = sales[`i'] + 500local x = x_axis[`i']local na = name[`i']local text_`i' = `"`y' `x' "`na'""'}*作图twoway bar sales x_axis, ///fcolor("midgreen") xtick(1(1)14) xtitle("cities") ///   xlabel(1 "三亚" 2 "上海" 3 "北京" 4 "厦门" 5 "大连" 6 "广州" 7 "成都" 8 "杭州" 9 "武汉" 10 "深圳" 11 "苏州" 12 "西安" 13 "重庆" 14 "青岛") ///   text(`text_1' `text_2' `text_3' `text_4' `text_5' `text_6' `text_7' `text_8' `text_9' `text_10' `text_11' `text_12' `text_13' `text_14')graph export pic3.png,as(png) replace

三月是赏花的时节,春回大地、万物复苏,缩了一整个冬天的脖子终于感受到了阳光的温度。人同此心,游客们除了参观【文化古迹】外,外出游览自然风光、携家同游【公园】成了不二的选择,樱花、桃花、迎春花万花齐放,翠鸟、蓝鸟、山雀鸟“声入人心”。 

上图的Stata程序如下所示: 
*pic4use HotCities,clearcollapse (sum) sales,by("theme")gsort -salesreplace theme = "迪士尼乐园等" in 8 //原主题为“活动”,含义模糊,故替换为占比达90%的“迪士尼乐园”encode theme,gen(x_axis)gen temp = _nlevelsof temp, local(xlabel_num)twoway (bar sales x_axis if sales<10000,fcolor("orange%50")) ///(bar sales x_axis if sales>10000,fcolor("red%80") ///xlabel(`"`xlabel_num'"', valuelabel angle(90)) ///legend(label(1 "<10000人次") label(2 ">=10000人次")))graph export pic4.png,as(png) replace

废话说了这么多,我到底应该去哪儿来一场说走就走的旅行呢?我们的答案是:想潜水,去蜈支洲岛;想参观文化古迹,去北京故宫;想泡一场呼噜呼噜的温泉,去华清宫;想玩大摆锤等游乐项目,去成都国色天乡;迪士尼公主在线找家,请去上海迪士尼乐园;海滨海岛和春暖花开,西岛是绝配;踏春采花去南山文化旅游区;想以不运动、不走路、能躺不站的形式观光请前往东方明珠塔,城市观光,坐在游览车上参观城市。

上图的Stata程序为: 
*pic5use HotCities,clearcollapse (sum) sales, by("theme" "name")gsort theme -salesby theme: keep if _n == 1gsort -salesencode theme,gen(x_axis)gen temp = _nlevelsof temp,local(xlabel_num)*生成值标签forvalues i = 1/32{local y = sales[`i'] + 500local x = x_axis[`i']local na = name[`i']local text_`i' = `"`y' `x' "`na'""'}*避免繁杂,只显示人次大于2000的值标签local text_content = ""forvalues i = 1/13{local text_content = `"`text_content'"' + " " + `"`text_`i''"'}*作图twoway (bar sales x_axis if sales<2000,fcolor("green%50")) ///(bar sales x_axis if sales > 2000,fcolor("blue%50") ///xlabel(`"`xlabel_num'"',valuelabel angle(90)) ///text(`text_content') legend(label(1 "<2000人次") label(2 ">2000人次")))graph export pic5.png,as(png) replace

跟我走吧~天亮就出发~

回复

使用道具 举报

快速回复 返回顶部 返回列表