2017-03-27
有的時候我們爬取數據的時候需要在多個頁面之間跳轉,爬取完所有頁面的數據的時候才能把所有數據一起存到數據庫,這個時候我們就需要把某個函數內爬取的數據傳到下一個函數當中。
有人可能會說,為什么不用全局變量呢?這是因為scrapy自帶多線程機制,好幾個線程同時跑,用全局變量很不明智,除非順序邏輯非常清楚的程序。
這個時候我們就要用到scrapy中Request方法的meta參數
def first(self, response)
code = response.xpath('*****').extract()[0]
yield FormRequest(url=url,meta={'code':code},formdata={},callback=self.next)
#meta和formdata屬性一樣,是一個字典,這里面我們把從網頁中爬取到的code值放在meta中傳入下一個函數
def next(self, response)
code = response.meta["code"]
#在下一個函數當中我們就可以從response對象當中取得meta中的code值,這里就可以確保兩個函數中code的值是完全一致的。