當Item 在Spider中被收集之后,就會被傳遞到Item Pipeline中進行處理

每個item pipeline組件是實現(xiàn)了簡單的方法的python類,負責接收到item并通過它執(zhí)行一些行為,同時也決定此Item是否繼續(xù)通過pipeline,或者被丟棄而不再進行處理

item pipeline的主要作用:

  1. 清理html數(shù)據(jù)

  2. 驗證爬取的數(shù)據(jù)

  3. 去重并丟棄

  4. 講爬取的結果保存到數(shù)據(jù)庫中或文件中

編寫自己的item pipeline

process_item(self,item,spider)

每個item piple組件是一個獨立的pyhton類,必須實現(xiàn)以process_item(self,item,spider)方法
每個item pipeline組件都需要調(diào)用該方法,這個方法必須返回一個具有數(shù)據(jù)的dict,或者item對象,或者拋出DropItem異常,被丟棄的item將不會被之后的pipeline組件所處理

下面的方法也可以選擇實現(xiàn)

open_spider(self,spider)
表示當spider被開啟的時候調(diào)用這個方法

close_spider(self,spider)
當spider掛去年比時候這個方法被調(diào)用

from_crawler(cls,crawler)
這個和我們在前面說spider的時候的用法是一樣的,可以用于獲取settings配置文件中的信息,需要注意的這個是一個類方法,用法例子如下:

Android培訓,安卓培訓,手機開發(fā)培訓,移動開發(fā)培訓,云培訓培訓

一些item pipeline的使用例子(官網(wǎng)說明)

例子1
這個例子實現(xiàn)的是判斷item中是否包含price以及price_excludes_vat,如果存在則調(diào)整了price屬性,都讓item['price'] = item['price'] * self.vat_factor,如果不存在則返回DropItem

Android培訓,安卓培訓,手機開發(fā)培訓,移動開發(fā)培訓,云培訓培訓

網(wǎng)友評論