03.爬虫---解析数据与提取数据---Network和json

本文介绍了在网络爬虫中如何利用浏览器的Network面板定位动态页面请求,并以QQ音乐搜索为例,讲解了如何查找所需请求,特别是通过Preview判断请求内容。同时,解释了XHR(XMLHttpRequest)用于实现页面局部更新的技术,并阐述了JSON作为数据交换格式的重要性。最后,提供了使用requests库获取数据并将其转化为JSON进行处理的实践操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

访问动态页面时,会有很多请求,如果用BeautifulSoup只能访问第0个请求,所以爬取大多数网页需要在Network中查找到所需要的请求页面。以QQ音乐的网站为例,在QQ音乐中搜索孙燕姿。

  • 找到Network

网页中点击右键,进入检查(ctrl+shift+i),第一行第四个是Network

  • Network的功能

记录在当前页面上发生的所有请求。现在点进去看上去好像空空如也的样子,这是因为Network记录的是实时网络请求。现在网页都已经加载完成,所以不会有东西。如果此时点击刷新,浏览器会重新访问网络,Network中就会有记录。

  • 红框框里表示共有25个请求,31.0KB流量,黄框框里是具体的25个请求。

(有些网页,直接把所有的关键信息都放在第0个请求里,尤其是一些比较老(或比较轻量)的网站,用requests和BeautifulSoup就能解决它们(前两篇里用的requests和BeautifulSoup只能访问第0个请求)。比如豆瓣TOP。)

当我们在QQ音乐中搜索时,会有很多个请求,要在黄框框中找到我们搜索的那个请求所在的具体位置,一般在右边(下面红框框中)的Preview中查看我们想要的内容到底在哪个请求中(搜索的话一般是client_search_cp....那个请求)。再用requests库,去模拟这个请求。然后在Header的General中找

要通过爬虫获取快手视频的播放量,需要理解快手网站的数据结构 API 接口。通常情况下,视频的播放量等信息是通过平台的后端接口返回的 JSON 数据中包含的。以下是实现该目标的基本步骤技术要点。 ### 1. 分析快手网页或 App 的请求 快手的视频播放量数据通常存储在其后端服务器中,并通过特定的 API 请求返回给前端展示。可以通过浏览器的开发者工具(F12)或抓包工具(如 Charles 或 Fiddler)来分析视频页面的网络请求。 - 打开快手网页或使用其移动端 App。 - 进入某个视频的播放页面。 - 使用开发者工具查看“Network”面板,找到相关的 XHR/Fetch 请求。 - 筛选出包含视频 ID 播放量信息的请求 URL。 ### 2. 提取播放量字段 在找到正确的 API 后,可以观察返回的 JSON 数据结构。播放量通常以 `play_count`、`view_count` 或类似的字段名存在。例如: ```json { "video": { "id": "1234567890", "play_count": 15000, "like_count": 3000, "comment_count": 200 } } ``` ### 3. 编写 Python 爬虫代码 使用 `requests` 库向上述 API 发送 HTTP 请求,并解析返回的 JSON 数据提取播放量信息。以下是一个示例代码: ```python import requests # 替换为实际的 API 地址 url = "https://api.kuaishou.com/rest/c/feed/video/detail" # 设置请求头,模拟浏览器访问 headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36", "Referer": "https://www.kuaishou.com/" } # 视频 ID(可以从视频页面 URL 中提取) video_id = "1234567890" # 构造请求参数 params = { "videoId": video_id } # 发送 GET 请求 response = requests.get(url, headers=headers, params=params) # 解析 JSON 数据 if response.status_code == 200: data = response.json() play_count = data["video"]["play_count"] print(f"视频播放量: {play_count}") else: print("请求失败") ``` ### 4. 处理反爬虫机制 快手可能会采用多种反爬虫技术,包括但不限于 IP 封锁、验证码、请求频率限制等。为了提高爬虫的稳定性,可以采取以下措施: - **使用代理 IP 池**:从第三方服务购买动态代理 IP,避免单一 IP 被封。 - **设置请求间隔**:在代码中加入 `time.sleep()` 函数,防止频繁请求触发风控机制。 - **模拟登录**:部分 API 需要用户登录状态,可以通过模拟登录获取 Cookie 并在后续请求中携带。 ### 5. 数据存储分析 将获取到的播放量数据存储到本地数据库或文件中,便于后续分析。可以使用 `pandas` 库进行数据清洗可视化处理。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值