我有一个解析很多网页的应用程序,为了解析,我使用了漂亮的汤,而且效果很好,我不寻找解析器的替代品,从我自己的时间安排和基准测试中可以看出该消耗了大部分时间掌握web请求实际的HTML而不是真正美丽的汤解析它。 这是我的代码:
def get_html(url: str):
req = urllib.request.Request(
url,
data=None,
headers={'User-Agent': 'Chrome/35.0.1916.47'})
uClient = urllib.request.urlopen(req, context=ssl.SSLContext(ssl.PROTOCOL_TLSv1))
html = uClient.read()
uClient.close()
return html
现在只是为了测试,我给这个计时(使用一些随机网址):
for i in range(20):
myhtml = get_html(url)
这平均花了我 11.30秒,这非常慢,在我的应用程序中,可能需要从URL中获取数百个html,所以显然我需要一个更快的解决方案... 顺便说一句,如果我一个美丽的汤解析器添加到循环是这样的:
for i in range(20):
myhtml = get_html(url)
page_soup = soup(html, "html.parser")
这只花了我平均时间 12.20秒,所以我可以肯定地说问题出在html而不是解析器。