用scrapy链接请求

时间:2014-11-06 14:47:46

标签: python web-scraping scrapy

现在我可以看到scrapy同时下载所有页面,但我需要的是链接peopleextract_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

1 个答案:

答案 0 :(得分:1)

您可以控制priority请求:

  

priority(int) - 此请求的优先级(默认为0)。优先事项   调度程序使用它来定义用于处理请求的顺序。   具有更高优先级值的请求将更早执行。负   允许使用值以表示相对较低的优先级。

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

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