Python 3.x 如何使用Scrapy(Python3)进行广度优先搜索?

Python 3.x 如何使用Scrapy(Python3)进行广度优先搜索?,python-3.x,scrapy,Python 3.x,Scrapy,我想以广度优先搜索的方式运行爬虫程序。 因此,我编写了以下代码 from scrapy.spider import BaseSpider from scrapy.http import Request class MySpider(BaseSpider): start_urls = ['http://example.com/a'] def parse(self, response): next_a = response.css('.next::attr(h

我想以广度优先搜索的方式运行爬虫程序。
因此,我编写了以下代码

from scrapy.spider import BaseSpider
from scrapy.http   import Request

class MySpider(BaseSpider):
    start_urls = ['http://example.com/a']

    def parse(self, response):
        next_a = response.css('.next::attr(href)').extract_first()
        if next_a:
            yield Request(next_a, callback=self.parse, priority = 3)

        for b in response.css('.b::attr("href")'):
            yield Request(b, callback=self.parse_b, priority = 2)

    def parse_b(self, response):
        pass
我希望此爬虫将按如下方式移动。
a1、a2、a3、…、an、b1、b2、b3、…、bn

但实际上是这样的。
a1、b1、b2、…、b_n1、a2、b_n1+1、b_n1+2、

如何才能按预期运行?

引用

Scrapy爬行的顺序是广度优先还是深度优先? 默认情况下,Scrapy使用队列存储挂起的请求,这 基本上意味着它会爬进去。这个订单比较方便 在大多数情况下。如果你真的想爬进去,你可以通过 设置以下设置:

DEPTH_PRIORITY = 1 SCHEDULER_DISK_QUEUE = 'scrapy.squeues.PickleFifoDiskQueue' SCHEDULER_MEMORY_QUEUE = 'scrapy.squeues.FifoMemoryQueue' 深度\优先级=1 调度程序\u磁盘\u队列='scrapy.sques.PickleFifoDiskQueue' 调度程序\u内存\u队列='scrapy.sques.FifoMemoryQueue'