一.数据来源分析

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数据需要其它方法提取数据。
Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐