用python爬取去哪儿网游记,给自己做一份疫情结束后的旅行指南
大家好,我是朱小五
2019年的春节假期会给我们留下深刻的印象,没有拜年、没有家庭聚餐、没有三五好友间的寒暄嬉闹;2020年的春天也会给我们这代人留下深刻的印象,非典时期的我们还是两三岁傻乎乎的孩子,却在这个春天迎头撞上了新冠,选择宅在家大概是我们普通人仅有的贡献,虽经历了确诊人数的峰值时期,但也见证了这个曲线逐渐缓和,渐渐“春暖了雪也融了”。
所以待疫情之后,我想用一场旅行“弥补”自己,这会是许多人内心所想,只是在等那一天罢了。
在“去哪儿网”爬取了一份有关“游记”的数据集,做一份简易的旅行攻略。
数据获取
数据地址:去哪儿网—>攻略—>攻略库—>热门游记
如图上可爬取到一些有用的数据:出发时间、旅游天数、人均费用、结伴人物、玩法、一条简介、游记的浏览量,当然也包括旅游地点(在简介之上,未截图),去哪儿网是一个对爬虫比较友好的网站,不需要模拟登录,只需要加上请求头即可完成爬取,切记爬慢一点,拿着人家的数据还给人家添麻烦,属实过分。
部分爬虫代码,完整版文末获取:
def spider():
headers = {
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.87 Safari/537.360',
'cookies': '*********************************',
'Host': 'travel.qunar.com'
}
count = 1
for i in range(len(the_url_list)):
try:
print('正在爬取第%s页'% count)
response = requests.get(url=the_url_list[i],headers = headers)
response.encoding = 'utf-8'
html = response.text
soup = BeautifulSoup(html,'lxml')
information = soup.find('p',attrs={'class': 'b_crumb_cont'}).text.strip().replace(' ','')
info = information.split('>')
last_list.append([location,introduction,Time,Day,Money,People,Play,Look])
#设置爬虫时间
time.sleep(random.randint(3,5))
count+=1
except Exception as e :
print(e)
#写入csv
with open('Travel.csv', 'a', encoding='utf-8-sig', newline='') as csvFile:
csv.writer(csvFile).writerow(['地点', '短评', '出发时间', '天数','人均费用','人物','玩法','浏览量'])
for rows in last_list:
csv.writer(csvFile).writerow(rows)
最终爬取得到的数据概览:
这份数据集共包括1775个样本以及8个属性。
数据整理
通过观察数据,有以下问题需要处理:
由于有的网页不规范,所以有的网页没有爬取到“地点”这一信息,数据中用“攻略”代替了;
将“出发时间”更改为标准时间格式;
“天数”中有“99+”的字样,明显是错误数据;
“人均费用”有低于100的数据???我读的书少,不要骗我;
“浏览量”中的数据不规范,需要统一强制转换成整型;
部分代码如下,完整版文末获取:
经数据清洗后:
数据可视化
短评词云分析
from pyecharts import WordCloud
wordcloud=WordCloud('简介词云分析',width=600,height=400)
wordcloud.add('简介词云分析',word1,num1,word_size_range=[25,80],shape = 'diamond')
wordcloud.render("5.html")
“美食”、“成都”、“自驾”是权重最高的三个词,事实确实如此,当我们计划到一个陌生城市游玩时,可能脑海里第一个想到的并不是当地有什么风景可看,而是有什么美食可吃,大概每个人都能算得上一个吃货吧;
自驾游也是当下火热的出游方式,随时都可以来一场说走就走的旅行。
旅游胜地Top10及对应费用
data1 = data
data1['地点'].value_counts().head(10)
就这份数据集而言,成都以106次访问成为Top1,成都的都江堰就足以引客无数,但可可爱爱熊猫的繁殖基地也位于成都,更是吸引了许多的熊猫粉前往,谁不想近距离接触一下这个铁憨憨国宝呢。
就价格而言,三亚成为Top1,平均人均费用近2000RMB,而平遥平均人均费用仅有1267RMB,一个是绝美的海岛风情,另一个则是饱经沧桑的平遥古城。
出游天数分析
data1['天数'].value_counts()
旅行时长主要分布在2-5天之间,3天最为普遍,太短会未尽兴致,太长又会花销太大,若有一份好的旅行计划,3天应该足够让你赏过一座城市的名胜,吃过大部分的特色美食,领略到这个城市的风情,也足够让你喜欢上这座城市。
出游方式分析
data1['人物'].value_counts()
“三五好友”结伴出游方式占比达到了40%,我认为这是最舒服的出游方式,没有之一,不需要有任何担忧,忘记生活中任何的烦恼,与朋友一起释放自己的天性,只顾开心就好啦。
出游玩法分析
“摄影”和“美食”可谓与旅行息息相关,一次完整的旅行最不能缺的就是“摄影”,拍美食发到朋友圈、拍风景发到朋友圈、拍完美的自己发到朋友圈;工作之后就没有了寒暑假,所以利用周末来一次短途旅行就成为了大多数人的首选。
出游时间分析
2019年的旅游时间曲线大约在五月一号起伏最大,原因肯定是因为假期调休延长至4天,为了调整自己生活及工作的状态,很多人利用这个假期去旅行放松自己。
如果疫情能在4月底控制,而五月一还有假期的话,是旅游业会暴走呢?还是仍然会限制人群大量聚集呢?
旅游地点推荐
k_list = []
the_list = []
keyword = input('请输入旅行月份:')
data5 = data4[data4['旅行月份'] == str(keyword)]
keyword1 = input('请输入结伴出游方式:')
data6 = data5[data5['人物'] == str(keyword1)]
price = int(input('请输入预期价格上限:'))
data7 = data6[data6['人均费用']<=price]
day1 = int(input('请输入旅行时长下限:'))
day2 = int(input('请输入旅行时长上限:'))
data8 = data7[(data7['天数']>=day1)&(data7['天数']<=day2)]
data8
八月暑假,与三五好友,来一场说走就走的旅行;于我而言,最想游荡西安,吃不停,玩不停,感受这座古城的风情,莫不是假期最好的选择。
小结
综上述分析可得到一些结论:
个人认为性价比较高的旅游城市:
杭州、成都。
旅游天数大多控制在2-5天内,不宜过多。
三五好友一起旅游是最令人们喜欢的出游方式。
“摄影”与“美食”已成为旅游的代名词。
避开旅游高峰期,三月和六月的周末短途旅行也是不错的选择。
文中相关源码
关注公众号「凹凸数据」后台回复“旅行”即可获取
近期文章,点击图片即可查看
后台回复关键词「进群」,即刻加入读者交流群~
五
除了公司,一个多月没去过其他地方了。。。
朱小五