有没有办法在 Playwright 中返回响应正文?

S4b*_*eur 2 python playwright

我正在与剧作家合作。我想从网络事件中获取响应正文(HTML),而不是等待 DOM 在浏览器中加载数据,然后解析元素。当前的工作流程看起来是这样的:

  1. 剧作家开启无头铬
  2. 使用验证码打开第一页(无数据)
  3. 解决验证码并重定向到包含数据的页面

有时会返回大量数据,并且页面需要相当长的时间才能在浏览器中加载,但所有数据都已在网络事件中从客户端接收。我的问题是可以在 Playwright 中获取网络事件,而不是等待所有元素加载。

我找到了Network Events文档,并且能够获取 HTML,但它返回所有请求而不是单个请求。

我使用 Playwright 只是为了导航、表单提交和获取网站 HTML。

小智 5

只需使用一些条件而不是 print 方法,例如您可以检查响应的 json 中是否包含某个键:

def run(playwright):
    chromium = playwright.chromium
    browser = chromium.launch()
    page = browser.new_page()
    # Subscribe to "request" and "response" events.
    page.on("request", lambda request: print(">>", request.method, request.url))
    page.on("response", lambda response: print("<<", response.status, response.url))
    page.goto("https://example.com")
    browser.close()
Run Code Online (Sandbox Code Playgroud)

例如:

page.on("response", lambda response: response if key in response.body())
Run Code Online (Sandbox Code Playgroud)

python 也应该有 waitForResponse,你可以使用它。