gpt4 book ai didi

python - 如何使用 Python 快速抓取多个 HTML 文档?

转载 作者:太空宇宙 更新时间:2023-11-04 11:16:20 25 4
gpt4 key购买 nike

我有一个大约 100 个 HTML 网页的列表(都有不同的结构,例如 div、 anchor 、类等),我试图抓取每个页面的标题(标题在某个 div 下,类(class))。为此,我使用了 get requests 和 Beautifulsoup,但是,这需要很长时间(每次我想这样做需要 10 分钟)!

我使用了一个计时器来查看什么花费的时间最多:它是 get 请求。显然 Python (3.7) 一个接一个地执行代码,并且由于每个 get 请求大约需要 5-6 秒,因此完成大约 100 个请求大约需要 500-600 秒。

我一直在寻找使这些请求更快地工作的方法,并遇到了许多不同的解决方案。然而,一个共同的主题似乎是使我的请求异步(因此所有请求同时开始)将解决问题(通过使其更快)。

我在网上阅读了很多可能的解决方案,包括:多线程、使用 grequest、使用 Scrapy、解析 lxml 等。但是,我是编程新手,不够熟练,无法学习和试验每种方法(事实上​​ ,我尝试按照类似问题的答案进行操作,但没有成功),所以我不确定我要采取的最佳路线是什么。

我不需要任何花哨的东西;我想要做的就是从 HTML 文档中提取标题作为文本,然后将它们打印出来。我不需要下载任何 CSS 文件、图像、媒体等。另外,我希望代码尽可能简单。我怎样才能在 Python 中尽可能快地做到这一点?如果有人可以建议最佳路径(即使用 Scrapy),并简要说明我必须使用该工具做什么才能获得我希望的结果,我将不胜感激。您不必为我写出整个代码。谢谢!

最佳答案

This answer似乎为您提供了可直接剪切和粘贴的答案。 (如果您的 HTML 请求大约需要 5 秒,您也可能会增加线程池的大小。)对于您的确切问题,代码:

def crawlToCSV(URLrecord):
OpenSomeSiteURL = urllib2.urlopen(URLrecord)
Soup_SomeSite = BeautifulSoup(OpenSomeSiteURL, "lxml")
OpenSomeSiteURL.close()

return Soup_SomeSite.title.string

将在 results 中创建一个标题列表。

关于python - 如何使用 Python 快速抓取多个 HTML 文档?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56928294/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com