【发布时间】:2020-06-14 21:05:01
【问题描述】:
我正在尝试编写一个简单的脚本,给定任意 URL 将返回该网站的标题标签。因为我要解析的许多 URL 都需要启用 JavaScript,所以我需要使用 requests_html 的渲染函数之类的东西来执行此操作。但是,我遇到了一个库问题,下面的示例 URL 永远不会终止。我已经尝试了渲染调用的超时参数,但它不起作用。谁能帮我弄清楚如何让它正确超时或其他一些解决方法以确保它不会卡住?
这是我当前没有终止的代码(它卡在渲染调用上):
from requests_html import HTMLSession
session = HTMLSession()
r = session.get('http://shan-shui-inf.lingdong.works/')
# render with JS
r.html.render(sleep = 1, keep_page=True)
# Also does not work: r.html.render(sleep = 1, keep_page=True, timeout = 3)
title = r.html.find('title', first=True).full_text
我已经尝试过类似的解决方案:Timeout on a function call 和 Python timeout decorator 仍然没有足够奇怪地超时。
注意:我在 Windows 10 上使用 Python 3.7.4 64 位。
【问题讨论】:
-
我遇到了类似的问题,对我来说,它会渲染某些 URL 30 次,然后挂起但从不超时。
-
你找到解决办法了吗?
-
这发生在我身上以及不同的网址。我认为问题出在 _async_render 方法上,特别是在捕获到 TimeoutError 时。在这种情况下,尝试执行永远不会返回的
await page.close()。可能与此issue 有关
标签: python-3.x web-scraping python-requests-html