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