我們寫爬蟲的時候經常會遇到比如一頁有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)}
這樣,就可以了