【问题标题】:navigating to "url", waiting until "load" - python playright issue导航到“url”,等到“加载”-python playright 问题
【发布时间】:2021-09-16 20:15:08
【问题描述】:

嘿,我在 python playwright 中有用于获取页面源的代码:

import json
import sys
import bs4
import urllib.parse
from bs4 import BeautifulSoup
server_proxy = urllib.parse.unquote(sys.argv[1])
link = urllib.parse.unquote(sys.argv[2])
from playwright.sync_api import sync_playwright
with sync_playwright() as p:
    #browser = p.chromium.launch(headless = False)
    browser = p.chromium.launch(proxy={"server": server_proxy,'username': 'xxx',"password": 'xxx' })
    context = browser.new_context(user_agent='Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.114 Safari/537.36')
    page = context.new_page()
    cookie_file = open('cookies_tessco.json')
    cookies = json.load(cookie_file)
    context.add_cookies(cookies)
    page.goto(link)
    try:
        page.wait_for_timeout(10000)
        cont = page.content()
        print(cont)
        page.close()
        context.close()
        browser.close()      
    except Exception as e:
        print("Error in playwright script." + page)
        page.close()
        context.close()
        browser.close()      

这工作正常,但有时我会收到此错误:

Traceback (most recent call last):
  File "page_tessco.py", line 17, in <module>
    page.goto(link)
  File "/usr/local/lib/python3.9/site-packages/playwright/sync_api/_generated.py", line 5774, in goto
    self._sync(
  File "/usr/local/lib/python3.9/site-packages/playwright/_impl/_sync_base.py", line 103, in _sync
    return task.result()
  File "/usr/local/lib/python3.9/site-packages/playwright/_impl/_page.py", line 464, in goto
    return await self._main_frame.goto(**locals_to_params(locals()))
  File "/usr/local/lib/python3.9/site-packages/playwright/_impl/_frame.py", line 117, in goto
    await self._channel.send("goto", locals_to_params(locals()))
  File "/usr/local/lib/python3.9/site-packages/playwright/_impl/_connection.py", line 36, in send
    return await self.inner_send(method, params, False)
  File "/usr/local/lib/python3.9/site-packages/playwright/_impl/_connection.py", line 47, in inner_send
    result = await callback.future
playwright._impl._api_types.TimeoutError: Timeout 30000ms exceeded.
=========================== logs ===========================
navigating to "https://www.tessco.com/product/207882", waiting until "load"

我尝试添加

page.wait_for_timeout(10000)

但是,这些错误有时会出现,任何帮助,我也很困惑为什么这个错误只是有时出现,是什么导致这个错误,如果有人有经验请分享一下?

【问题讨论】:

    标签: python playwright playwright-python


    【解决方案1】:

    https://www.tessco.com/product/207882 加载速度慢。尝试延长30000ms的默认超时时间,为page.goto(link)添加超时时间:

    page.goto(link, timeout = 0)
    

    timeout 设置为0 可以禁用超时。 Documentation

    或者,您可以通过以下方式禁用超时:

    page.set_default_timeout(0)
    page.goto(link)
    

    【讨论】:

    • 我做到了,但是,我有时仍然会收到相同的错误:playwright._impl._api_types.TimeoutError: Timeout 30000ms exceeded.
    • @HHHHHHT 我尝试了您的代码,但无法重现该错误。我从p.chromium.launch() 语句中删除了proxy 参数。也许试试看。
    • 是的,它有时会出现,但并非总是如此。我不能,因为网站阻止了我的服务器 IP,这就是为什么你需要使用代理
    • 也许可以试试像100000 这样的大数字,而不是0
    猜你喜欢
    • 2023-03-07
    • 1970-01-01
    • 1970-01-01
    • 2021-10-24
    • 1970-01-01
    • 1970-01-01
    • 2015-09-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多