scrapy中 Request方法中的meta引數 是什麼? 幹什麼用的?
阿新 • • 發佈:2018-11-03
#在items模組中有下面三個引數: import scrapy class TextItem(spider.Item): title = scrapy.Field() price = scrapy.Field() image = scrapy.Field() #在spider爬蟲中: class TaobaoSpider(scrapy.Spider): name = ['taobao'] allowed_domains = ['www.taobao.com'] def parse1(self,response): ''' 需要知道的是item是一個字典''' item = TextItem() for product in response.css('......').extract(): item['title'] = product.css('......').extract_first() item['price'] = product.css('......').extract_first() url = product.css('......').extract_first() yield = scrapy.Request(url=url, meta={'item':item} callback=self.parse2) ''' 比如我們要爬取淘寶上的商品,我們在第一層爬取時候獲得了標題(title)和價格(price), 但是還想獲得商品的圖片,就是那些點進去的大圖片,假設點進去的連結是上述程式碼的url, 利用scrpy.Request請求url後生成一個Request物件,通過meta引數,把item這個字典賦值給meta字典的'item'鍵, 即meta={'item':item},這個meta引數會被放在Request物件裡一起傳送給parse2()函式。''' def parse2(self,response): item = response.meta['item'] for product in response.css('......').extract(): item[imgae] = product.scc('......').extract_first() return item ''' 這個response已含有上述meta字典,此句將這個字典賦值給item,完成資訊傳遞。 這個item已經和parse中的item一樣了 之後我們就可以做圖片url提取的工作了, 資料提取完成後return item ,這樣就完成了資料抓取的任務了。 '''