干货|Python爬取《去哪儿》攻略库,制作一份详细的旅行攻略,疫情后来一场说走就走的旅行!

本文主要是介绍干货|Python爬取《去哪儿》攻略库,制作一份详细的旅行攻略,疫情后来一场说走就走的旅行!,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

去哪儿是中国领先的在线OTA网站,为消费者提供机票、酒店、会场 、度假产品的实时搜索,并提供旅游产品团购以及其他旅游信息服务。去哪儿网站上有丰富的图片、评论数据,这些大量的数据对于从事数据岗位的来说的确是一种福利,有了这些我们可以练习爬虫技能、数据分析与可视化,漂亮的图片做文案素材也是一种不错的选择。

疫情总会过去的,宅了这么久,相信很多人疫情后都会来一场说走就走的旅行。小编今天准备爬取去哪儿的攻略库,并制作了一份详细的数据分析、可视化的旅行攻略。
爬取位置

网页分析

爬虫流程三步曲:

  • 打开网站,分析网页上的数据;
  • 通过F12开发者工具,获取接口是数据是html还是json,翻页是url控制还是ajax;
  • 编写代码发起网络请求,添加反爬机制、容错环节;

在这里插入图片描述
通过对网页的分析,我们有几个点是确定的:

  • 不同城市的网址不同,我们需要收集爬取城市的网址;
  • 数据在html中可以获取,我们对html进行解析;
  • 对于html的网页,我们需要边爬取保存数据;
  • 每个城市可以爬取200页,有些城市数据不足200页;
数据获取

1.确定爬取字段
在这里插入图片描述爬取数据的字段有:区域、目的地、标题、链接、攻略作者、出发日期、天数、照片数、人数、玩法、费用、阅读数、点赞数、评论数、行程等。

2.获取最大页数

def getPageNum(html):#获取总页数pageNum=1bsObj = BeautifulSoup(html,"html.parser")pageList = bsObj.find("div",attrs = {"class":"b_paging"}).find_all("a")if(pageList):pageNum = pageList[-2].textreturn int(pageNum)

3.解析网页

link = "https://travel.qunar.com" + book.h2.a["href"]
#标题
title = book.h2.a.text
places = book.findAll("p", attrs = {"class":"places"})
#行程
if len(places)>1:trip_places = places[1].text
else:trip_places=places[0].textuser_info = book.find("p", attrs = {"class":"user_info"})
intro = user_info.find("span", attrs = {"class":"intro"})
#作者
user_name = intro.find("span", attrs = {"class":"user_name"}).text
#print("user_name:",user_name)
date = intro.find("span", attrs = {"class":"date"}).text
#天数
days = intro.find("span", attrs = {"class":"days"}).text
#照片数
photoTmp = intro.find("span", attrs = {"class":"photo_nums"})
if(photoTmp):photo_nums = photoTmp.text
else:photo_nums = "没有照片"
# 人数
peopleTmp = intro.find("span", attrs = {"class":"people"})
if(peopleTmp):people = peopleTmp.text
else:people = ""

通过上述3步,小编已经将去哪儿的数据爬取下来了。看着是不是很简单,不过看似简单,实操起来未必就这么简单哦。实践出真知,慢慢体会爬虫过程中的要点和注意点。下面是成果展示
在这里插入图片描述

数据预处理

至此我们已经获取了数据。旅行是为了放松心情、体验地方特色。为了一场完美的旅行,制作一份详细的旅行攻略是必不可少的。

对于获取的数据,我们需要进行进一步的处理以满足分析的需求,主要做的数据处理步骤如下:

  • 删除重复值
  • 修正字段
  • 删除不需要字段

具体代码实现

#数据读取
import pandas as pd
import re
#数据读取
base_data =  pd.read_excel('trip_data_merge.xlsx')
#删除重复值
base_data.drop_duplicates(inplace=True)
#分析中不需要的字段
base_data = base_data.drop(['链接'], axis=1)
#字段修正,方便统计
base_data['天数']= base_data['天数'].apply(lambda x :re.sub("\D", "", x) )
base_data['照片数']= base_data['照片数'].apply(lambda x :re.sub("\D", "", x) )
base_data['费用']= base_data['费用'].apply(lambda x :re.sub("\D", "", str(x) ))
base_data['费用'] = base_data['费用'].apply(lambda x : eval(x) if len(x)>0 else 0 )
base_data['date']= base_data['出发日期'].apply(lambda x :x.split( )[0] )
base_data['date_year']= base_data['出发日期'].apply(lambda x :x.split( )[0][:4])
base_data['阅读数']= base_data['阅读数'].apply(lambda x : int(re.sub("\D", "", str(x)))*10000 if str(x).find('万') else x)
数据分析、可视化
1.费用问题

外出旅行,首先要考虑的肯定的费用问题。因疫情原因,在费用的数据分析统计中,我们剔除了2020年的数据,考虑了2017年、2018年、2019年的数据。
在这里插入图片描述
上图展示了近三年主要热门目的地人均消费情况,包含国内、国外热门地区。根据数据统计,国外人均平均消费为9461元,国内为3313元,游客在国外消费是国内消费的2.85倍。国内人均消费的排名前四名:丽江、三亚、香港、上海。在国外消费前四名:马尔代夫、法国、美国、日本。为什么游客在马尔代夫的人均消费比上海人均消费高达6倍的差距呢?

1)游客人群

马尔代夫游客人群分布
在这里插入图片描述
上海游客人群分布
在这里插入图片描述
马尔代夫,一个名字听起来就让人浮想联翩的地方,被称作上帝抛洒在人间的项链,人间最后的乐园,吸引了很多人去度假休闲,其中情侣占比高达54.8%,再加上机酒消费,这也成为马尔代夫消费高的一个重要原因,上海游客人群比较分散,其中情侣占比15%左右,一人旅行、三五好友占比相对较高。

2)逗留时长

上海游客逗留时长
在这里插入图片描述
马尔代夫游客逗留时长
在这里插入图片描述
判断一个城市对游客对心引力,游客逗留时间是最核心指标。从上图我们可以看到马尔代夫的逗留时间占比中4-7天、8-10天合计占比高达80%以上。上海逗留时间在1-3天占比为52.45%,4-7天、8-10天合计占比约为41%,这样是马尔代夫人均消费高的一个重要因素。

2.玩法攻略

什么样的旅行方式是游客最喜欢的呢?我相信仁者见仁,智者见智。我们看看游客外出最喜欢的玩法排行榜
在这里插入图片描述
从上图中我们可以看到,美食、购物+美食、短途周末、海滨海岛、自驾等玩法是大家的最爱,探险、环游、骑行等也收到不少人的喜爱,你喜欢什么样的玩法呢?

打卡景点

去一个地方去旅行,有些景点必须要去的,对于一个陌生的城市,怎么样可以快速确定打卡景点呢?小编选择了上海、成都、武汉,看看这些是否有遗漏的打卡景点呢。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.最赞路线

想去的打卡景点都有了,我们要有一个最完美的路线,小编在下面梳理一下网友点赞最高的路线,你是否满意呢?下面进行图片展示。
在这里插入图片描述

技术交流

欢迎转载、收藏本文,码字不易,有所收获点赞支持一下!

为方便进行学习交流,本号开通了技术交流群,添加方式如下:

直接添加小助手微信号:pythoner666,备注:CSDN+python,或者按照如下方式添加均可!
在这里插入图片描述

这篇关于干货|Python爬取《去哪儿》攻略库,制作一份详细的旅行攻略,疫情后来一场说走就走的旅行!的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/325778

相关文章

大模型研发全揭秘:客服工单数据标注的完整攻略

在人工智能(AI)领域,数据标注是模型训练过程中至关重要的一步。无论你是新手还是有经验的从业者,掌握数据标注的技术细节和常见问题的解决方案都能为你的AI项目增添不少价值。在电信运营商的客服系统中,工单数据是客户问题和解决方案的重要记录。通过对这些工单数据进行有效标注,不仅能够帮助提升客服自动化系统的智能化水平,还能优化客户服务流程,提高客户满意度。本文将详细介绍如何在电信运营商客服工单的背景下进行

python: 多模块(.py)中全局变量的导入

文章目录 global关键字可变类型和不可变类型数据的内存地址单模块(单个py文件)的全局变量示例总结 多模块(多个py文件)的全局变量from x import x导入全局变量示例 import x导入全局变量示例 总结 global关键字 global 的作用范围是模块(.py)级别: 当你在一个模块(文件)中使用 global 声明变量时,这个变量只在该模块的全局命名空

电脑桌面文件删除了怎么找回来?别急,快速恢复攻略在此

在日常使用电脑的过程中,我们经常会遇到这样的情况:一不小心,桌面上的某个重要文件被删除了。这时,大多数人可能会感到惊慌失措,不知所措。 其实,不必过于担心,因为有很多方法可以帮助我们找回被删除的桌面文件。下面,就让我们一起来了解一下这些恢复桌面文件的方法吧。 一、使用撤销操作 如果我们刚刚删除了桌面上的文件,并且还没有进行其他操作,那么可以尝试使用撤销操作来恢复文件。在键盘上同时按下“C

【Python编程】Linux创建虚拟环境并配置与notebook相连接

1.创建 使用 venv 创建虚拟环境。例如,在当前目录下创建一个名为 myenv 的虚拟环境: python3 -m venv myenv 2.激活 激活虚拟环境使其成为当前终端会话的活动环境。运行: source myenv/bin/activate 3.与notebook连接 在虚拟环境中,使用 pip 安装 Jupyter 和 ipykernel: pip instal

【机器学习】高斯过程的基本概念和应用领域以及在python中的实例

引言 高斯过程(Gaussian Process,简称GP)是一种概率模型,用于描述一组随机变量的联合概率分布,其中任何一个有限维度的子集都具有高斯分布 文章目录 引言一、高斯过程1.1 基本定义1.1.1 随机过程1.1.2 高斯分布 1.2 高斯过程的特性1.2.1 联合高斯性1.2.2 均值函数1.2.3 协方差函数(或核函数) 1.3 核函数1.4 高斯过程回归(Gauss

【学习笔记】 陈强-机器学习-Python-Ch15 人工神经网络(1)sklearn

系列文章目录 监督学习:参数方法 【学习笔记】 陈强-机器学习-Python-Ch4 线性回归 【学习笔记】 陈强-机器学习-Python-Ch5 逻辑回归 【课后题练习】 陈强-机器学习-Python-Ch5 逻辑回归(SAheart.csv) 【学习笔记】 陈强-机器学习-Python-Ch6 多项逻辑回归 【学习笔记 及 课后题练习】 陈强-机器学习-Python-Ch7 判别分析 【学

nudepy,一个有趣的 Python 库!

更多资料获取 📚 个人网站:ipengtao.com 大家好,今天为大家分享一个有趣的 Python 库 - nudepy。 Github地址:https://github.com/hhatto/nude.py 在图像处理和计算机视觉应用中,检测图像中的不适当内容(例如裸露图像)是一个重要的任务。nudepy 是一个基于 Python 的库,专门用于检测图像中的不适当内容。该

pip-tools:打造可重复、可控的 Python 开发环境,解决依赖关系,让代码更稳定

在 Python 开发中,管理依赖关系是一项繁琐且容易出错的任务。手动更新依赖版本、处理冲突、确保一致性等等,都可能让开发者感到头疼。而 pip-tools 为开发者提供了一套稳定可靠的解决方案。 什么是 pip-tools? pip-tools 是一组命令行工具,旨在简化 Python 依赖关系的管理,确保项目环境的稳定性和可重复性。它主要包含两个核心工具:pip-compile 和 pip

HTML提交表单给python

python 代码 from flask import Flask, request, render_template, redirect, url_forapp = Flask(__name__)@app.route('/')def form():# 渲染表单页面return render_template('./index.html')@app.route('/submit_form',

沁恒CH32在MounRiver Studio上环境配置以及使用详细教程

目录 1.  RISC-V简介 2.  CPU架构现状 3.  MounRiver Studio软件下载 4.  MounRiver Studio软件安装 5.  MounRiver Studio软件介绍 6.  创建工程 7.  编译代码 1.  RISC-V简介         RISC就是精简指令集计算机(Reduced Instruction SetCom