【发布时间】:2019-11-17 13:51:47
【问题描述】:
我有一个大约 100 个 HTML 网页的列表(都有不同的结构,例如 div、锚点、类等),我正在尝试抓取每个页面的标题(其中标题位于某个 div 和班级)。为此,我使用了 get requests 和 Beautifulsoup,但是,这需要很长时间(每次我想做 10 分钟)!
我使用了一个计时器来查看花费最多的时间:它是获取请求。显然 Python (3.7) 一个接一个地执行代码,并且由于每个 get 请求大约需要 5-6 秒,因此大约需要 500-600 秒来完成大约 100 个请求。
我一直在寻找使这些请求更快地工作的方法,并遇到了许多不同的解决方案。然而,一个共同的主题似乎是让我的请求异步(因此所有请求同时开始)将解决问题(通过使其更快)。
我在网上阅读了许多可能的解决方案,包括:多线程、使用 grequest、使用 Scrapy、解析 lxml 等。但是,我是编程新手,还不够熟练,无法学习和尝试每种方法(实际上,我尝试按照 SO 上类似问题的答案进行操作,但没有成功),所以我不确定我采取的最佳途径是什么。
我不需要任何花哨的东西;我要做的就是从 HTML 文档中提取标题作为文本,然后将它们打印出来。我不需要下载任何 CSS 文件、图像、媒体等。此外,我希望使代码尽可能简单/裸露。如何在 Python 中尽可能快地做到这一点?如果有人能建议最佳路径(即使用 Scrapy),我将不胜感激,并简要说明我必须使用该工具做什么才能获得我希望的结果。您不必为我写出整个代码。谢谢!
【问题讨论】:
标签: python html parsing web-scraping scrapy