scrapy爬蟲 函式間傳值簡易教程

右介發表於2017-05-09

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的值是完全一致的。

相關文章