我正在读Dimitrios Kouzis Loukas的learning scrapy
。实际上,我有一个关于第三章第58页Two-direction crawling with a spider
部分的问题。你知道吗
原始代码如下:
def parse(self, response):
# Get the next index URLs and yield Requests
next_selector = response.xpath('//*[contains(@class,"next")]//@href')
for url in next_selector.extract():
yield Request(urlparse.urljoin(response.url, url))
# Get item URLs and yield Requests
item_selector = response.xpath('//*[@itemprop="url"]/@href')
for url in item_selector.extract():
yield Request(urlparse.urljoin(response.url, url),
callback=self.parse_item)`
但根据我的理解,第二个循环块是否应该包含在第一个循环块中,这样我们就可以先下载索引页,然后下载第一页中的所有信息页,然后再进入下一个索引页?你知道吗
所以我只想知道原始代码的操作顺序,请帮忙!你知道吗
你真的不能合并这两个循环。你知道吗
其中产生的
Request
对象具有不同的回调。第一个将由
parse
方法处理(它似乎在解析多个项的列表),第二个由parse_item
方法处理(可能解析单个项的细节)。你知道吗至于刮削的顺序,scrapy(默认情况下)使用后进先出队列,这意味着将首先处理创建的最后一个请求。
但是,由于scrapy的异步特性,不可能说出确切的顺序。你知道吗
相关问题 更多 >
编程相关推荐