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

如何使用Selenium库将网站响应信息保存为JSON文件?

用Selenium保存网站响应到JSON文件

当然可以通过Selenium实现这个需求。不过要注意,Selenium核心是模拟浏览器交互,不像requests库那样直接获取HTTP响应,所以我们需要借助浏览器的性能日志来捕获网络请求的响应数据,再导出为JSON格式。

实现步骤

  1. 配置浏览器选项,启用性能日志
    以Chrome为例,需要设置goog:loggingPrefs开启网络日志记录,让浏览器捕获所有网络请求和响应。

  2. 捕获并过滤网络响应
    访问目标页面后,从浏览器的性能日志中提取出包含响应数据的条目,过滤出你需要的请求(比如特定API接口)。

  3. 解析响应并保存为JSON文件
    将捕获到的响应内容解析为Python字典,再用json模块写入到本地JSON文件中。

代码示例(Python)

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
import json

# 配置Chrome选项,启用网络日志
chrome_options = Options()
chrome_options.set_capability("goog:loggingPrefs", {"performance": "ALL"})

# 启动浏览器
driver = webdriver.Chrome(options=chrome_options)

# 访问目标页面
driver.get("https://example.com")  # 替换成你要爬取的网站

# 获取性能日志
logs = driver.get_log("performance")

# 过滤出包含响应的日志条目
response_entries = []
for entry in logs:
    try:
        message = json.loads(entry["message"])["message"]
        # 只保留有响应数据的条目
        if "Network.responseReceived" in message["method"]:
            request_id = message["params"]["requestId"]
            # 获取完整的响应内容
            response = driver.execute_cdp_cmd("Network.getResponseBody", {"requestId": request_id})
            # 整理需要保存的数据,比如URL、状态码、响应体
            response_data = {
                "url": message["params"]["response"]["url"],
                "status": message["params"]["response"]["status"],
                "body": response.get("body", "")
            }
            response_entries.append(response_data)
    except Exception as e:
        continue  # 跳过解析失败的日志条目

# 将数据保存到JSON文件
with open("website_responses.json", "w", encoding="utf-8") as f:
    json.dump(response_entries, f, indent=2, ensure_ascii=False)

# 关闭浏览器
driver.quit()

注意事项

  • 不同浏览器的日志配置可能略有差异,比如Firefox需要设置moz:firefoxOptions里的prefs。
  • 如果响应是加密的(比如gzip压缩),getResponseBody会自动解密,无需额外处理。
  • 可以根据需求调整过滤条件,比如只保留特定状态码、特定URL前缀的响应。

内容的提问来源于stack exchange,提问作者Alex Rebell

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 09:42:51