在Scrapy中爬行的顺序

时间:2011-12-04 22:24:19

标签: python scrapy

我在scrapy中写了一个基本的CrawlSpider,但我想了解网址被抓取的顺序是什么 - FIFO / LIFO?

我希望抓取工具抓取起始网址页面中的所有链接,然后转到其他似乎不是订单的网址。

我该怎么做?

2 个答案:

答案 0 :(得分:8)

http://readthedocs.org/docs/scrapy/en/0.14/faq.html#does-scrapy-crawl-in-breath-first-or-depth-first-order

  

默认情况下,Scrapy使用LIFO队列存储待处理的请求,   这基本上意味着它以DFO顺序爬行。这个订单更多   在大多数情况下方便。如果您确实想要以真正的BFO顺序进行爬网,   您可以通过设置以下设置来完成此操作:

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

答案 1 :(得分:0)

您可以在您的settings.py中添加它:

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

供参考,请参阅官方文档。