python+playwright 学习-82 Request 对象

前言

每当页面发送网络资源请求时,页面都会发出以下事件序列:

  • page.on("request") 当页面发出请求时触发
  • page.on("response") 接收到请求的响应状态和标头时触发
  • page.on("requestfinished") 当响应主体被下载并且请求完成时发出。

如果请求在某个时刻失败,则会发出page.on("requestfailed")事件,而不是'requestfinished'事件(也不是"response"事件)。

HTTP错误响应,如404或503,从HTTP的角度来看仍然是成功的响应,所以请求将以“requestfinished”事件完成。

如果请求得到“重定向”响应,则会使用requestfinished事件成功完成请求,并向重定向的url发出新请求。

Request 对象相关操作方法

相关操作方法

  • all_headers()
  • header_value()
  • headers_array()
  • response()
  • sizes()
  • is_navigation_request()

all_headers

具有与此请求相关联的所有请求HTTP标头的对象。标头名称的大小写均为小写。
该方法返回 Dict[str, str]<

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Playwright是一个用于自动化浏览器的Python库。要使用勾子函数,可以使用Playwright提供的 `before_request` 和 `after_request` 函数。这些函数允许您在发送请求之前或之后执行代码。 以下是一个示例代码,它使用 `before_request` 函数来添加自定义请求标头,使用 `after_request` 函数来记录请求的响应时间: ```python import asyncio from playwright.async_api import Playwright, async_playwright async def intercept_request(request): headers = request.headers() headers['X-Custom-Header'] = 'Custom Value' await request.continue_(headers=headers) async def log_response_time(response): print(f"Response time: {response.timing()['responseEnd'] - response.timing()['requestStart']} ms") async def main(playwright: Playwright) -> None: browser = await playwright.chromium.launch() page = await browser.new_page() # 添加 before_request 和 after_request 勾子 page.on('request', intercept_request) page.on('response', log_response_time) await page.goto('https://www.example.com') await browser.close() async with async_playwright() as playwright: asyncio.get_event_loop().run_until_complete(main(playwright)) ``` 在上面的代码中,我们添加了两个勾子函数,一个用于在请求之前添加自定义标头,另一个用于在请求完成后记录响应时间。这些勾子函数都是异步函数,并在创建页面后使用 `page.on` 方法添加到页面中。 当页面开始请求时,`intercept_request` 函数将被调用,并传递请求对象。我们可以在这个函数中修改请求标头,并通过调用 `request.continue_` 方法继续请求。 当页面收到响应时,`log_response_time` 函数将被调用,并传递响应对象。我们可以在这个函数中记录响应时间,并将其打印出来。 总体来说,Playwright的勾子函数提供了很多灵活性,可以让您在自动化浏览器时执行更多自定义操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值