我有一个相对简单的网络抓取应用程序,主要使用 Beautiful Soup,但对于动态加载的网站,我一直在使用 Playwright,并且喜欢它......当它工作时。
我已经使用 docker 对我的应用程序进行了容器化,并且该容器也在本地运行,包括两条剧作家路线。但即使我将超时设置为 60000 毫秒,在渲染上部署时仍然没有运气。
TLDR:无法逃避我的剧作家路线上的超时错误。
这是我的渲染日志中的主要错误:
playwright._impl._errors.TimeoutError: Timeout 60000ms exceeded.
这是部署时超时的 Flask 路由之一的开始:
def eulogy():
url = 'https://burialbeer.com/pages/eulogy'
with sync_playwright() as p:
browser = p.chromium.launch(headless=True)
context = browser.new_context(user_agent=headers['User-Agent'])
page = context.new_page()
page.goto(url, timeout=60000). #TIME OUT OCCURS RIGHT HERE
ageVerificationBtn = 'button[name="confirm-age"]'...
.```
对我来说这很有效:
with sync_playwright() as p:
browser = p.chromium.launch(headless=True,
args=[
'--no-sandbox',
'--disable-setuid-sandbox',
'--disable-dev-shm-usage',
'--disable-accelerated-2d-canvas',
'--no-zygote',
'--single-process'])
添加 args 数组有帮助。我不确定是哪一个,但现在该应用程序在部署和本地时都可以工作。