scrapy的链接请求
问题描述:
现在我可以看到scrapy同时下载所有页面,但我需要的是链接people
和extract_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
)
正如我在日志中看到,它仍然几乎是相同的。 'extract_person'之前还有很多'人'方法执行。 – 2014-11-06 16:49:46
@DmitryMikhaylov是的,由于'start_urls'是如何在内部处理的,它们已经可能在排队了。尝试[此解决方案](http://*.com/a/9176662/771848) - 重写'start_requests()'方法并从中返回一个url列表。谢谢。让我知道它是否有帮助。 – alecxe 2014-11-06 16:53:12