首先导包
from scrapy.linkextractors import LinkExtractor
使用Scrapy的LinkExtractor对象来找出页面上所有满足特定条件的链接。这个条件是通过一个XPath表达式来定义的
le = LinkExtractor(restrict_xpaths='//div[@class="tp-cards-tofu fn-clear"]/ul/li/a')
将响应中所有满足LinkExtractor条件的链接提取出来,并把这些链接存储在links
列表中
links = le.extract_links(response)
下面代码的作用是遍历先前通过 LinkExtractor
提取的链接,并为每一个链接创建一个新的 scrapy.Request
对象。这个新请求会被添加到 Scrapy 的调度器中去。yield
关键字在这里用于生成一个 scrapy.Request
对象,这个对象包含了要访问的链接以及对响应内容处理的回调函数 self.parse_detail
。Scrapy 的工作流是基于这种生成的请求的。
for link in links:
yield scrapy.Request(link.url, callback=self.parse_detail)