查看原文
其他

寻找春日气息|本月最受欢迎的景点都在这里!

爬虫俱乐部 Stata and Python数据分析 2022-03-15
本文作者:王玉婷,中南财经政法大学金融学院

本文编辑:刘子艳

技术总编:戴   雯

Stata&Python云端课程来啦!

      寒雪梅中尽,春风柳上归。为了感谢大家长久以来的支持和信任,爬虫俱乐部为大家送福利啦!!!Stata&python特惠课程双双上线腾讯课堂~原价2400元的Python编程培训课程,现在仅需100元,详情请查看推文《Python云端课程福利大放送!0基础也能学~》;原价600元的正则表达式课程,现在仅需49.9元,详情请查看推文《与春天有个约会,爬虫俱乐部重磅推出正则表达式网络课程!》;原价600元的基本字符串函数课程,现在仅需49.9元,更多信息请查看推文《与春天有个约会,爬虫俱乐部重磅推出基本字符串函数网络课程;原价600元的网络爬虫课程,现在仅需49.9元,更多信息请查看推文《与春天有个约会,爬虫俱乐部重磅推出网络爬虫专题课程》原价600元的文本分析课程,现在仅需49.9元,更多信息请查看推文与春天有个约会,爬虫俱乐部重磅推出文本分析网络课程。变的是价格,不变的是课程质量和答疑服务。对报名有任何疑问欢迎在公众号后台和腾讯课堂留言哦!
导 言

阳春三月出游季,踏春赏花正当时。一段时间以来,想必大家都被武汉烂漫璀璨的樱花刷了屏迷了眼。在这踏春出游的大好时节,你有没有带上家人、爱人、朋友去“十里樱花”体验一番三生三世的缘分呢?欢迎大家留言告诉我们你的出游轶事哦~未能出游的朋友也不用羡慕,现在我们就前往去哪儿网(网址为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. 将各城市的景点数据合并,数据结构如下图所示:


爬虫程序换汤不换药,限于篇幅,这里不再介绍了,感兴趣的朋友可以在后台对话框内回复关键词“ 去哪儿 ”,您将获得:
  • 去哪儿完整爬虫程序

  • 爬虫结果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 -sales
encode 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
春天已经来了,夏天还会晚吗?清明的雨纷纷落了,五一长假还会远吗?一场扫除阴霾、沐浴阳光、阖家欢乐的旅行应该计划起来了!

后,我们为大家揭秘雪球网(https://xueqiu.com/)最新所展示的沪深证券和港股关注人数增长Top10。

欢迎大家点赞、评论、转发哟~


对我们的推文累计打赏超过1000元,我们即可给您开具发票,发票类别为“咨询费”。用心做事,不负您的支持!

往期推文推荐

问世间情为何物,大数据也想参悟——后考研时代,何以解忧?唯有数据!

Python与数据库交互—浅述pymysql

偷懒小妙招|selenium之玩转鼠标键盘操作--鼠标篇

大家用Stata来“找茬”

“粉墨登场”——多期双重差分法(DID)的Stata操作

Python与百度地图合璧,绘制棒呆的热力地图

【数据可视化】统计图绘制神器:Seaborn

检索Stata推文的“任意门”学会了这些,分分钟提升你的毕业体验

【爬虫实战】双一流大学的月关注度

【爬虫实战】“中国人不吃这一套”——人民日报微博评论分析

进化的标签管理助手——elabel命令

“学术明星”——双重差分法(DID)的Stata操作

偷懒小妙招| selenium之玩转鼠标键盘操作(上)

【爬虫实战】南京地铁又上热榜——客流量分析

renfiles:批量重命名文件的利器

Stata中字符串的处理

物以类聚——浅述k-means聚类算法

我在哪里?调用高德API获取地址经纬度信息

超级简单的条件函数,轻松生成虚拟变量

Python云端课程福利大放送!0基础也能学~

【爬虫实战】“我们,继续新故事”——爬取LOL英雄皮肤

“人像动漫化”—Python实现抖音特效

跨框架合并数据|frlink的用法,你get到了吗

《唐探3》做错了什么?|来自150万字影评的证据

爬虫俱乐部年度总结|《请回答2020》

关于我们 


微信公众号“Stata and Python数据分析”分享实用的Stata、Python等软件的数据处理知识,欢迎转载、打赏。我们是由李春涛教授领导下的研究生及本科生组成的大数据处理和分析团队。



此外,欢迎大家踊跃投稿,介绍一些关于Stata和Python的数据处理和分析技巧。

投稿邮箱:statatraining@163.com投稿要求:
1)必须原创,禁止抄袭;
2)必须准确,详细,有例子,有截图;
注意事项:
1)所有投稿都会经过本公众号运营团队成员的审核,审核通过才可录用,一经录用,会在该推文里为作者署名,并有赏金分成。
2)邮件请注明投稿,邮件名称为“投稿+推文名称”。
3)应广大读者要求,现开通有偿问答服务,如果大家遇到有关数据处理、分析等问题,可以在公众号中提出,只需支付少量赏金,我们会在后期的推文里给予解答。

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存