Scrapy中的爬取顺序

2 投票
2 回答
3203 浏览
提问于 2025-04-17 07:41

我在使用scrapy写了一个基本的CrawlSpider,但我想弄明白爬虫抓取网址的顺序是怎样的,是先来先服务(FIFO)还是后进先出(LIFO)?

我希望爬虫能先抓取起始网址页面上的所有链接,然后再去抓取其他网址,但现在的顺序似乎不是这样的。

我该怎么做呢?

2 个回答

0

你可以在你的settings.py文件里添加这个:

    DEPTH_PRIORITY = 1
    SCHEDULER_DISK_QUEUE = 'scrapy.squeues.PickleFifoDiskQueue'
    SCHEDULER_MEMORY_QUEUE = 'scrapy.squeues.FifoMemoryQueue'

想了解更多,可以查看官方文档。

9

默认情况下,Scrapy使用一种叫做LIFO的队列来存储待处理的请求,这意味着它会按照深度优先的顺序进行爬取。这个顺序在大多数情况下更方便。如果你想要按照真正的广度优先顺序进行爬取,可以通过设置以下选项来实现:

 DEPTH_PRIORITY = 1
 SCHEDULER_DISK_QUEUE = 'scrapy.squeue.PickleFifoDiskQueue'
 SCHEDULER_MEMORY_QUEUE = 'scrapy.squeue.FifoMemoryQueue'

撰写回答