【发布时间】:2020-01-28 09:52:18
【问题描述】:
我正在使用 Scrapy 抓取一个包含数百万个页面的网站,我需要关注这些页面并从中提取信息。
爬虫目前每分钟只能抓取 200 页,我需要加快速度。
对于每个页面,爬虫都会提取其链接并跟踪它们。问题是每个页面有大约 600 个链接,其中大部分都在所有页面上,我认为这就是为什么爬虫为所有链接调用请求函数需要这么长时间的原因,即使它们是重复的。
这是我的代码的简化版本:
def parse_data(self, response):
item = URL()
outlinks_extrated = [l.url for l in LinkExtractor(allow_domains=self.allowed_domains, deny_extensions = self.reg_deny, unique=False, restrict_xpaths=self.xpath_outlinks, tags=self.tags, deny = self.regex_denied).extract_links(response)]
for url in outlinks_extrated:
yield scrapy.Request(url, callback=self.parse_data)
item['url'] = response.request.url
yield item
我已经尝试设置每个域的并发请求和并发请求但没有成功。
有谁知道为什么爬行需要这么长时间以及如何加快速度?
【问题讨论】:
-
这次抓取运行期间您的 CPU 使用率是多少? Scrapy 默认使用默认启用的
RFPDupefilter过滤重复的 url。
标签: python scrapy web-crawler