Scrapy:在方法之间传递项目

Dio*_*ian 16 python scrapy

假设我有一个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
Run Code Online (Sandbox Code Playgroud)

按原样使用代码会导致详细信息阶段中的未定义项.如何将项目传递给细节?细节(自我,响应,项目)似乎不起作用.

iMo*_*om0 31

有一个以metaRequest 命名的参数:

yield Request(url, callback=self.detail, meta={'item': item})
Run Code Online (Sandbox Code Playgroud)

然后在功能中detail,以这种方式访问​​它:

item = response.meta['item']
Run Code Online (Sandbox Code Playgroud)

有关工作主题,请参阅此处的更多详