携程酒店数据采集
·
一.数据来源分析
1.明确需求
明确采集的网站以及数据内容
- 网址:https://hotels.ctrip.com/hotels/list
- 数据:酒店相关信息

2.抓包分析
通过浏览器的开发者工具分析对应的数据的位置
- 打开开发者工具
- 刷新网页
- 让本网页的数据内容重新加载一遍(网站数据包)
- 通过关键字搜索找到对应的数据位置
- 关键字搜索:需要什么搜索什么

- 关键字搜索:需要什么搜索什么
二.代码实现步骤
requests(伪装成浏览器获取数据)
模拟浏览器:涉及网站存在加密
- 模拟请求需要携带响应参数(实时更新),逆向分析加密参数(工程量比较大)
1.发送请求:模拟浏览器对于url地址发送请求
2.获取数据:获取服务返回的响应数据
3.解析数据:提取我们需要的数据内容
4.保存数据:把提取出来的数据保存到本地文件中
drissionpage模块(直接使用浏览器获取数据)
自动化模块:模拟人的行为对于浏览器进行相关操作,简单好上手,适合初学者
- 自动化模块推荐使用drissionpage
1.打开浏览器,访问网站
2.获取数据
3.解析数据
4.保存数据
准备工作
需要让程序自动打开浏览器
- 请问:程序如何知道你用的哪个浏览器
新建一个临时py文件,并输入以下代码,填入自己电脑里的浏览器可执行文件路径,然后运行。
from DrissionPage import ChromiumOptions
path = r"D:\chrome\Chrome.exe" #请改为你自己的可执行浏览器文件路径
Chromiumoptions().set_browser_path(path).save()

1.打开浏览器,访问网站
2.获取数据,
- 监听数据包:监听数据包特征,当网站加载含有这个特征链接,可以直接获取响应数据
- 数据包
- 特征是什么?

- 监听数据包流程:一定要在执行动作之前
- 先监听数据包
- 再访问网站
- 然后等待加载
- 最后获取数据
代码实现
#导入自动化模块
from DrissionPage import ChromiumPage
# 打开浏览器(实例化浏览器对象)
# 1.打开浏览器,访问网站
dp = ChromiumPage()
#监听数据包
dp.listen.start('fetchHotelList')
# 访问网站
dp.get('https://hotels.ctrip.com/hotels/list')
#等待数据加载
r = dp.listen.wait()
# 2.获取数据
json_data = r.response.body
print(json_data)
##这里爬取出来的数据并不是json数据需要其它方法提取数据。
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐



所有评论(0)