【发布时间】:2019-07-13 16:29:43
【问题描述】:
我试图从互联网上将一长串 HTML 文件下载到我的计算机上,然后使用 BeautifulSoup 从我的计算机上抓取这些文件。说来话长,为什么我想在刮之前先把它们保存到我的电脑上,所以我不写文章就省去了你的麻烦!
无论如何,对我来说,请求模块在处理许多 URL 时太慢了,所以我决定坚持使用 urllib 并使用多处理/线程池来使请求函数并行运行(因此它比一个接一个地请求每个文件要快)。
我的问题是:我想要做的是独立保存每个 HTML/URL - 也就是说,我想存储 每个 HTML 文件 单独,而不是写所有的 HTML 到一个文件中。虽然多处理和 urllib 可以并行请求 HTML,但我不知道如何分别下载(或保存/写入 txt)每个 HTML。
我正在想象类似于我刚刚在下面编写的一般示例,其中并行函数中的每个请求都将并行执行。
parallel(
request1
request2
request3
...
)
希望它是这样的原因是我可以在下一步使用相同的简单脚本结构:使用 BeautifulSoup 解析 HTML。就像我在第一部分中为每个 URL 设置单独的请求函数一样,我需要为每个 HTML 设置单独的解析函数,因为每个 HTML 的结构都不同。如果您有不同的解决方案,那也没关系,我只是想解释一下我的想法;它没有有是这样的。
是否可以使用多处理(或任何其他库)来执行此操作(单独请求和单独解析)?昨天我花了一整天的时间在 StackOverflow 上试图找到类似的问题,但很多都涉及使用复杂的东西,比如 eventlet 或 scrapy,没有人提到将每个 HTML 下载到单独的文件中并单独解析它们,但并行进行。
【问题讨论】:
标签: python-3.x web-scraping beautifulsoup parallel-processing urllib