天天看點

scrapy在不同的Request之間傳遞參數的辦法

scrapy在不同的抓取級别的Request之間傳遞參數的辦法

下面的範例中,

parse_item

方法通過

meta

parse_details

方法中傳遞參數

item

,這樣就可以在

parse_details

方法中擷取到這個參數的值。

注意:

meta={'item': item}

中如果有多個參數,則每個參數間用英文逗号隔開,例如:

meta={'item': item,'item2': item2}

class MySpider(BaseSpider):  
    name = 'myspider'  
    start_urls = (  
        'http://example.com/page1',  
        'http://example.com/page2',  
        )  
  
    def parse(self, response):  
        # collect `item_urls`  
        for item_url in item_urls:  
            yield Request(url=item_url, callback=self.parse_item)  
  
    def parse_item(self, response):  
        item = MyItem()  
        # populate `item` fields  
        yield Request(url=item_details_url, meta={'item': item},  
            callback=self.parse_details)  
  
    def parse_details(self, response):  
        item = response.meta['item']  
        # populate more `item` fields  
        return item  
                

繼續閱讀