Scrapy, похоже, не выполняет DFO

У меня есть веб-сайт, за которым мой поисковый робот должен следить последовательность. Так, например, ему нужно пройти a1, b1, c1, прежде чем он начнет переходить a2 и т. Д., Каждый из a, b и c обрабатывается разными функциями синтаксического анализа, и соответствующие URL-адреса создаются в объекте Request и выдаются. Следующее примерно иллюстрирует код, который я использую:

class aspider(BaseSpider):

    def parse(self,response):
        yield Request(b, callback=self.parse_b, priority=10)

    def parse_b(self,response):
        yield Request(c, callback=self.parse_c, priority=20)

    def parse_c(self,response)
        final_function()        

Однако я обнаружил, что последовательность обходов выглядит как a1, a2, a3, b1, b2, b3, c1, c2, c3, что странно, поскольку я думал, что Scrapy Предполагается, что сначала должна быть гарантирована глубина.

Последовательность не должна быть строгой, но у сайта, который я сканирую, есть ограничение, поэтому Scrapy необходимо начать сканирование уровня c, как только это возможно, до того, как будет просканирован 5 уровень bs. Как этого добиться?

11
задан Jeffrey Greenham 14 May 2012 в 23:47
поделиться