python中网页html的快速检索

2024-04-19 03:54:24 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个解析很多网页的应用程序,对于解析,我使用beautiful soup,它工作得很好,我不是在寻找解析器的替代品,我可以从我自己的计时和基准测试中看到,大部分时间是用web请求获取实际的html,而不是用beautiful soup实际解析它。 这是我的密码:

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

现在,为了进行测试,我对这个进行了计时(使用一些随机url):

for i in range(20):
    myhtml = get_html(url)

这平均花了我11.30秒,这是非常慢的,在我的应用程序中,我可能需要数百个来自url的htmls,所以显然我需要一个更快的解决方案。。。 顺便说一句,如果我向循环中添加一个漂亮的soup解析器,如下所示:

for i in range(20):
    myhtml = get_html(url)
    page_soup = soup(html, "html.parser")

这只需要12.20秒的平均时间,所以我可以肯定地说问题出在html上,而不是解析器上。你知道吗


Tags: 应用程序解析器urlsslforgetrequesthtml