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

如何在Python Selenium中获取FETCH/XHR请求的网络状态码

Python Selenium获取FETCH/XHR响应状态码实现方案

可以通过Selenium的性能日志抓取功能实现该需求,你提交的原有代码存在多处逻辑错误导致无法获取结果:

原有代码问题汇总:

  • 未导入DesiredCapabilities模块就直接调用
  • 性能日志配置逻辑写在driver初始化之后,配置参数未生效
  • 调用get_log时传入了browser参数,只能获取控制台输出日志,无法拿到网络请求相关的性能日志
  • webdriver初始化语法错误,缺少webdriver.Chrome类声明

完整实现代码

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
import os
import json

# 配置Chrome参数
chrome_options = Options()
# 如需无头模式可取消下面的注释
# chrome_options.add_argument("--headless=new")

# 配置性能日志采集
caps = DesiredCapabilities.CHROME.copy()
caps['goog:loggingPrefs'] = {'performance': 'ALL'}

# 初始化driver(注意参数传入顺序,capabilities要在初始化时传入)
dpath = os.path.join(os.getcwd(), "chromedriver")
driver = webdriver.Chrome(
    executable_path=dpath,
    options=chrome_options,
    desired_capabilities=caps
)

# 访问目标页面
driver.get("https://www.geeksforgeeks.org/")

# 获取所有性能日志
performance_logs = driver.get_log("performance")

# 遍历日志筛选FETCH/XHR的响应状态码
for entry in performance_logs:
    log = json.loads(entry["message"])["message"]
    # 筛选响应接收事件
    if log["method"] == "Network.responseReceived":
        params = log["params"]
        # 筛选资源类型为XHR或Fetch
        if params["type"] in ["XHR", "Fetch"]:
            response = params["response"]
            # 打印请求地址、状态码
            print(f"请求地址:{response['url']}")
            print(f"响应状态码:{response['status']}\n")

# 关闭driver
driver.quit()

核心逻辑说明

  • Selenium的performance类型日志会记录所有网络请求相关的事件,我们需要过滤Network.responseReceived事件(该事件在请求收到响应时触发)
  • 事件参数中的type字段对应资源类型,筛选值为XHR或Fetch的记录即可定位到目标请求
  • 状态码存储在事件参数的response.status字段中

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 06:24:00