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

如何在Playwright Python中获取特定GET请求的响应?

解决Playwright Python获取特定GET请求响应的问题

不需要重新发送请求,Playwright可以直接捕获页面触发的请求响应。针对你的需求,有两种实用方法:

方法1:使用page.wait_for_response(精准等待单个请求)

如果你知道接下来要通过点击/滚动触发目标请求,可以提前设置等待,等请求完成后直接获取响应:

from playwright.sync_api import sync_playwright

with sync_playwright() as p:
    browser = p.chromium.launch(headless=False)
    page = browser.new_page()
    page.goto("你的目标页面URL")

    # 先设置响应等待规则,匹配GET请求且URL包含目标关键词
    response = page.wait_for_response(lambda resp: resp.request.method == "GET" and "目标请求的URL关键词" in resp.url)
    
    # 执行触发请求的动作,比如点击按钮
    page.click("触发请求的元素选择器")

    # 解析并获取JSON响应
    json_data = response.json()
    print(json_data)

    browser.close()

方法2:监听response事件(持续捕获多个请求)

如果需要捕获页面过程中多次触发的目标请求,可以在response事件里过滤并处理:

from playwright.sync_api import sync_playwright

target_url_keyword = "目标请求的URL关键词"
captured_responses = []

def handle_response(response):
    # 过滤GET请求且URL包含目标关键词的响应
    if response.request.method == "GET" and target_url_keyword in response.url:
        json_data = response.json()
        captured_responses.append(json_data)
        print("捕获到目标响应:", json_data)

with sync_playwright() as p:
    browser = p.chromium.launch(headless=False)
    page = browser.new_page()
    # 绑定响应处理函数
    page.on("response", handle_response)

    page.goto("你的目标页面URL")
    # 执行触发请求的操作,比如点击、滚动
    page.click("触发元素选择器")
    page.mouse.wheel(0, 1000)  # 滚动页面触发请求

    # 等待片刻确保所有请求完成
    page.wait_for_timeout(2000)

    print("所有捕获的响应:", captured_responses)
    browser.close()

关键提示:

  • 匹配URL时,不用写完整URL,用关键词或正则表达式更灵活,避免URL中的动态参数影响匹配
  • 通过response.request可以获取对应请求的详细信息(如请求头、参数等),方便确认请求与响应的对应关系
  • response.json()会直接将响应内容解析为Python字典,便于后续处理

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 13:12:12