scrapy的链接请求

scrapy的链接请求

问题描述:

现在我可以看到scrapy同时下载所有页面,但我需要的是链接peopleextract_person方法,以便当我在方法people中获取人员列表时,我会遵循所有这些方法并全部删除我需要的信息,只有在此之后,我才能继续使用其他网页的人们。我怎样才能做到这一点?scrapy的链接请求

def people(self, response): 
    sel = Selector(response) 
    urls = sel.xpath(XPATHS.URLS).extract() 
    for url in student_urls: 
     yield Request(
      url=BASE_URL+url, 
      callback=self.extract_person, 
     ) 

def extract_person(self, response): 
    sel = Selector(response) 
    name = sel.xpath(XPATHS.NAME).extract()[0] 
    person = PersonItem(name=name) 
    yield student 

可以控制请求的priority

优先级(INT) - 该请求(默认为0)的优先级。调度程序使用优先级 来定义用于处理请求的顺序。 具有较高优先级值的请求将在较早时间执行。为了表示相对较低的优先级,允许使用负值 值。

的人请求优先级设置为1会让Scrapy知道先处理它们:

for url in student_urls: 
    yield Request(
     url=BASE_URL+url, 
     callback=self.extract_person, 
     priority=1 
    ) 
+0

正如我在日志中看到,它仍然几乎是相同的。 'extract_person'之前还有很多'人'方法执行。 – 2014-11-06 16:49:46

+1

@DmitryMikhaylov是的,由于'start_urls'是如何在内部处理的,它们已经可能在排队了。尝试[此解决方案](http://*.com/a/9176662/771848) - 重写'start_requests()'方法并从中返回一个url列表。谢谢。让我知道它是否有帮助。 – alecxe 2014-11-06 16:53:12