我们写爬虫的时候经常会遇到比如一页有20个产品,但是还需要进入单个产品里面爬取更详细的信息,这里就涉及到如何传递参数才能匹配好各个产品的信息,这里就引出scrapy中 request的meta参数,该参数只接受字典形式
meta={'k1':v1,'k2':v2}
用法如下
def parse(self, response):
items = ScrapytestItem()
items['name'] = 'csdn'
href = href_domains + item.css('......').extract_first()
yield Request(
url=href,
callback=self.parse_details,
meta={'items': items},
)
def parse_details(self, response):
items2 = response.meta['items']
这样,items2里面就有了parse里面的items['name']参数
有时候需要循环遍历yield,但是发现传的参数总是最后一个值,原来meta是浅拷贝,此时我们需要深拷贝
import copy
meta={'items': copy.deepcopy(items)}
这样,就可以了