크롤러가 시퀀스를 따라야하는 웹 사이트가 있습니다. 예를 들어 a1, b1 및 c1이 a2 등으로 시작하기 전에 먼저 a1, b1 및 c1을 검색해야합니다. 각각의 a, b 및 c는 서로 다른 구문 분석 함수로 처리되며 해당 URL은 Request 객체에 만들어져 반환됩니다. , I 크롤링 시퀀스는 A1, A2, A3, B1, B2, B3, C1, C2 것으로 보인다 찾을 그러나 이상한 C3를치료가 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()
다음 대략 I가 사용하고있는 코드를 도시 나는 Scrapy가 깊이를 먼저 보장하기로되어 있다고 생각했기 때문에.
시퀀스가 엄격 할 필요는 없지만 내가 긁고있는 사이트에는 제한이 있으므로 Scrapy는 레벨 5를 크롤링하기 전에 가능한 한 빨리 레벨을 긁어 모으기 시작해야합니다. 어떻게이 일을 성취 할 수 있습니까?
우선 순위 설정을 생략하면 어떻게됩니까? –
동일하지만, 우선 순위를 추가하려는 시도는 결과에 영향을 줄 수 있는지 확인하려고 시도하는 것이 었습니다. – Mishari
Srcrapy는 BaseSpider를 사용하여 자동으로 크롤링하지 않습니다. 'BaseSpider'를 사용하고 있기 때문에, a1, b1, c1, a2, b2, c2의 요청을 생성하는 코드를 보여주는 것이 매우 중요합니다 (일부는 "Start-Urls" c ". – wuliang