Scrapy中的爬取顺序
我在使用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'