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


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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM