當Item 在Spider中被收集之后,就會被傳遞到Item Pipeline中進行處理
每個item pipeline組件是實現(xiàn)了簡單的方法的python類,負責接收到item并通過它執(zhí)行一些行為,同時也決定此Item是否繼續(xù)通過pipeline,或者被丟棄而不再進行處理
item pipeline的主要作用:
清理html數(shù)據(jù)
驗證爬取的數(shù)據(jù)
去重并丟棄
講爬取的結果保存到數(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配置文件中的信息,需要注意的這個是一個類方法,用法例子如下:
一些item pipeline的使用例子(官網(wǎng)說明)
例子1
這個例子實現(xiàn)的是判斷item中是否包含price以及price_excludes_vat,如果存在則調(diào)整了price屬性,都讓item['price'] = item['price'] * self.vat_factor,如果不存在則返回DropItem