假设我有一个Bookitem,我需要在解析阶段和详细信息阶段都向其中添加信息
def parse(self, response) data = json.loads(response) for book in data['result']: item = BookItem(); item['id'] = book['id'] url = book['url'] yield Request(url, callback=self.detail) def detail(self,response): hxs = HtmlXPathSelector(response) item['price'] = ...... #I want to continue the same book item as from the for loop above
按原样使用代码将导致详细阶段中未定义的项目。如何将物品传递到细节?细节(自我,响应,项目)似乎不起作用。
有一个名为meta Request 的参数:
meta
yield Request(url, callback=self.detail, meta={'item': item})
然后在function中detail,以这种方式访问它:
item = response.meta['item']