【发布时间】:2011-12-04 22:24:18
【问题描述】:
我在 scrapy 中编写了一个基本的 CrawlSpider,但我想了解抓取网址的顺序是什么 - FIFO / LIFO?
我希望爬虫应该爬取起始 url 页面中的所有链接,然后移动到其他似乎不是顺序的 URL。
我该怎么做?
【问题讨论】:
我在 scrapy 中编写了一个基本的 CrawlSpider,但我想了解抓取网址的顺序是什么 - FIFO / LIFO?
我希望爬虫应该爬取起始 url 页面中的所有链接,然后移动到其他似乎不是顺序的 URL。
我该怎么做?
【问题讨论】:
默认情况下,Scrapy 使用 LIFO 队列来存储挂起的请求, 这基本上意味着它按 DFO 顺序爬行。这个订单更多 在大多数情况下很方便。如果您确实想以真正的 BFO 顺序爬行, 您可以通过设置以下设置来做到这一点:
DEPTH_PRIORITY = 1
SCHEDULER_DISK_QUEUE = 'scrapy.squeue.PickleFifoDiskQueue'
SCHEDULER_MEMORY_QUEUE = 'scrapy.squeue.FifoMemoryQueue'
【讨论】:
settings.py文件中
你可以在你的 settings.py 中添加这个:
DEPTH_PRIORITY = 1
SCHEDULER_DISK_QUEUE = 'scrapy.squeues.PickleFifoDiskQueue'
SCHEDULER_MEMORY_QUEUE = 'scrapy.squeues.FifoMemoryQueue'
参考官方文档
【讨论】: