如何使用 playwright 通过网络应用程序捕获重定向

2024-03-24

当你去到这个的时候link https://scnv.io/760y,页面将运行一些 javascript,然后自动重定向到pdf https://qcg-media.s3.amazonaws.com/media/uploads/72778/2022/06/20220622_663043_221.pdf。我很难从剧作家那里得到最终的网址。

from playwright.sync_api import sync_playwright

with sync_playwright() as p:
    browser = p.chromium.launch()
    page = browser.new_page()
    page.goto("https://scnv.io/760y", wait_until="networkidle")
    print(page.url)
    page.close()

有没有办法获得最终的网址?


有多种方法可以做到这一点。一种方法是使用page.expect_response https://playwright.dev/python/docs/api/class-page#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()
    
    # Catch any responses with '.pdf' at the end of the url
    with page.expect_response('**/*.pdf') as response:
        page.goto("https://scnv.io/760y")

    print(response.value.url)
    page.close()

Output

https://qcg-media.s3.amazonaws.com/media/uploads/72778/2022/06/20220622_663043_221.pdf

看看这个section https://playwright.dev/python/docs/network详细介绍了 playwright 中处理网络流量的文档。

另请注意,我没有包括wait_until='networkidle'因为这不适合这个用例。为了触发该事件,网络必须保持空闲至少 500 毫秒,而本网站在向 pdf 发出请求时不会发生这种情况。因此,如果您要包含该内容,那么代码在捕获我们想要的 url 请求时最多会不一致。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 playwright 通过网络应用程序捕获重定向 的相关文章

随机推荐