【问题标题】:How to increase Scrapy crawling speed?如何提高 Scrapy 的爬行速度?
【发布时间】:2026-01-04 22:45:01
【问题描述】:

我正在使用 Scrapy 抓取网站并将数据提取到 json 文件中,但我发现对于某些网站,抓取工具需要很长时间才能抓取完整的网站。

我的问题是:我怎样才能最大限度地减少抓取时间?

【问题讨论】:

    标签: python scrapy


    【解决方案1】:

    尝试调整CONCURRENT_ITEMSCONCURRENT_REQUESTSCONCURRENT_REQUESTS_PER_DOMAIN 和其他设置。

    有关设置的完整列表,请参阅http://doc.scrapy.org/en/latest/topics/settings.html

    【讨论】:

    • 嗨@DaniloBargen.. 感谢您的快速回复。我的问题是理想情况下应该为 CONCURRENT_ITEMS、CONCURRENT_REQUESTS、CONCURRENT_REQUESTS_PER_DOMAIN 设置什么值,以便我们的爬虫快速执行?我的意思是我将如何决定应该设置哪些值,或者我是否必须进行反复试验才能看到它是如何工作的?
    • 反复试验。这些值非常依赖于被抓取网站的网络服务器,以及您的互联网连接(显然)。但是您可以查看默认值(请参阅文档)并开始增加它们以观察效果。
    • 嗨@DaniloBargen..我尝试在我的Spider文件中设置CONCURRENT_ITEMS、CONCURRENT_REQUESTS、CONCURRENT_REQUESTS_PER_DOMAIN的值。但是我用来从中提取数据的网站非常大,我很难通过试错法来测试爬取整个网站所花费的时间来获取这些值,因为我必须等待相当长的时间才能执行爬虫然后再次更改值并进行测试。有没有其他方法可以让我为特定站点尝试这些值的组合,以足够快地看到结果以进行测试。谢谢..
    • 将您要抓取的页面数限制在 100 个左右。
    • @DaniloBargen.. 我尝试使用扩展名“scrapy.contrib.closespider.CloseSpider”添加限制并设置 CLOSESPIDER_PAGECOUNT = 100..但仍然需要很多时间。我还将值降低到 5 仍然不适合我。是因为我设置了规则的原因:rules = [ Rule(SgmlLinkExtractor(allow=()), follow=True, callback=('parse_item')) ]
    最近更新 更多