當(dāng)Item 在Spider中被收集之后,就會(huì)被傳遞到Item Pipeline中進(jìn)行處理

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

item pipeline的主要作用:

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

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

  3. 去重并丟棄

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

編寫自己的item pipeline

process_item(self,item,spider)

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

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

open_spider(self,spider)
表示當(dāng)spider被開啟的時(shí)候調(diào)用這個(gè)方法

close_spider(self,spider)
當(dāng)spider掛去年比時(shí)候這個(gè)方法被調(diào)用

from_crawler(cls,crawler)
這個(gè)和我們?cè)谇懊嬲fspider的時(shí)候的用法是一樣的,可以用于獲取settings配置文件中的信息,需要注意的這個(gè)是一個(gè)類方法,用法例子如下:

Android培訓(xùn),安卓培訓(xùn),手機(jī)開發(fā)培訓(xùn),移動(dòng)開發(fā)培訓(xùn),云培訓(xùn)培訓(xùn)

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

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

Android培訓(xùn),安卓培訓(xùn),手機(jī)開發(fā)培訓(xùn),移動(dòng)開發(fā)培訓(xùn),云培訓(xùn)培訓(xùn)

延伸閱讀

學(xué)習(xí)是年輕人改變自己的最好方式-Java培訓(xùn),做最負(fù)責(zé)任的教育,學(xué)習(xí)改變命運(yùn),軟件學(xué)習(xí),再就業(yè),大學(xué)生如何就業(yè),幫大學(xué)生找到好工作,lphotoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動(dòng)軟件開發(fā)培訓(xùn),網(wǎng)站設(shè)計(jì)培訓(xùn),網(wǎng)站建設(shè)培訓(xùn)學(xué)習(xí)是年輕人改變自己的最好方式