现在我可以看到scrapy同时下载所有页面,但我需要的是链接people
和extract_person
方法,这样当我获取方法people
中的人员列表时,我会关注所有这些并抓取我需要的所有信息并且仅在此之后我继续另一页人们的网址。我怎样才能做到这一点?
def people(self, response):
sel = Selector(response)
urls = sel.xpath(XPATHS.URLS).extract()
for url in 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:
priority(int) - 此请求的优先级(默认为0)。调度程序使用优先级来定义用于处理请求的顺序。具有更高优先级值的请求将更早执行。允许使用负值以指示相对较低的优先级。
将人员请求的优先级设置为1
将让Scrapy知道首先处理它们:
for url in student_urls:
yield Request(
url=BASE_URL+url,
callback=self.extract_person,
priority=1
)