我有一个网站,我的抓取工具需要遵循一个序列。因此,例如,它需要先去a1,b1,c1,然后才能开始执行a2等。a,b和c中的每一个都由不同的解析函数处理,并且相应的url在Request对象中创建并产生。下面大致说明我正在使用的代码:Scrapy似乎没有做DFO
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需要在b级5个级别之前尽快开始抓取级别c。这怎么能实现?
如果您忽略优先级设置,会发生什么情况? – 2012-03-05 11:34:54
同样,我试图增加优先考虑的方式是尝试查看是否可以影响结果。 – Mishari 2012-03-05 16:20:21
Srcrapy不会使用BaseSpider自动爬网。由于您使用的是“BaseSpider”,因此显示代码您非常重要请求a1,b1,c1,a2,b2,c2(有些可能由“Start-Urls”设置...不仅仅是'b, c“。 – wuliang 2012-05-08 05:09:43