You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何查找网络流中的JSON文件,用Python+Selenium爬取全部评论文本

操作指引:Python + Selenium 抓取评论接口JSON并提取评论文本

第一步:前置环境准备

  • 安装依赖包:执行命令pip install selenium selenium-wire json,selenium-wire是Selenium的扩展包,支持直接捕获浏览器网络流,比原生Selenium更适合本次需求
  • 配置对应浏览器的WebDriver,确保WebDriver版本和你本地使用的浏览器版本完全匹配

第二步:手动定位评论接口特征

先手动打开目标页面,按F12打开开发者工具,切换到「网络」面板,筛选「Fetch/XHR」类型,滑动页面加载更多评论,找到返回评论内容的请求:

  • 点击请求查看「响应」标签,确认内容包含评论文本后,记录该请求的URL特征、请求方法、参数规则,比如URL中包含comment、review这类关键词

第三步:编写代码启动浏览器并加载全部评论

示例代码如下,根据你的实际场景替换对应参数即可:

from seleniumwire import webdriver
import json
import time

# 初始化Chrome浏览器,也可替换为Firefox等其他浏览器
driver = webdriver.Chrome()
# 替换为你的目标页面URL
driver.get("https://xxx.xxx/xxx")
# 等待页面初始加载完成,可根据网络速度调整时长
time.sleep(3)

# 模拟滚动加载全部评论,避免只抓到第一页内容
last_height = driver.execute_script("return document.body.scrollHeight")
while True:
    driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
    time.sleep(2)
    new_height = driver.execute_script("return document.body.scrollHeight")
    # 滚动后页面高度无变化,说明已经加载完全部内容
    if new_height == last_height:
        break
    last_height = new_height

第四步:提取JSON响应中的评论文本

遍历所有捕获的网络请求,匹配之前记录的评论接口特征,解析JSON提取评论文本:

all_comments = []
for request in driver.requests:
    # 替换为你之前记录的评论接口URL特征
    if "comment" in request.url and request.response:
        try:
            # 解析响应为JSON格式
            response_json = json.loads(request.response.body.decode('utf-8'))
            # 以下提取路径需根据实际接口返回的JSON结构调整
            # 示例为接口返回结构为{"code":0,"data":{"comments":[{"content":"评论内容"},...]}}的场景
            comments_list = response_json.get('data', {}).get('comments', [])
            for item in comments_list:
                comment_content = item.get('content', '').strip()
                if comment_content:
                    all_comments.append(comment_content)
        except json.JSONDecodeError:
            continue

# 爬取完成后关闭浏览器
driver.quit()

第五步:处理爬取结果

可以直接打印查看,或者保存到本地文件:

# 打印所有评论
for idx, comment in enumerate(all_comments, 1):
    print(f"第{idx}条评论:{comment}")

# 保存到本地TXT文件
with open("comments.txt", "w", encoding="utf-8") as f:
    for comment in all_comments:
        f.write(comment + "\n")

注意事项:

  1. 部分网站的评论接口有请求头校验,若解析失败可以给Selenium配置和浏览器正常请求一致的UA、Cookie等参数
  2. 滚动等待时间可以根据网站加载速度调整,避免没加载完就触发下一次滚动
  3. JSON提取路径一定要和实际接口返回的结构对应,建议先打印完整的response_json确认结构再写提取逻辑

内容的提问来源于stack exchange,提问作者Kachen Tathong

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 06:48:04