1. 程式人生 > >scrapy 自定義pipline

scrapy 自定義pipline

pipline除了預設的process_item方法還有另外幾個方法:from_crawler,open_spider,close_spider

from scrapy.exceptions import DropItem

class ShanPipeline(object):
    def __init__(self,val):
        self.value = val#資料庫的名稱

    def process_item(self, item, spider):
        # 操作並進行持久化

        # return表示會被後續的pipeline繼續處理
        return item

        # 表示將item丟棄,不會被後續pipeline處理
        # raise DropItem()


    @classmethod
    def from_crawler(cls, crawler):#crawler  settings被讀取到然後放到crawler物件中
        """
        初始化時候,用於建立pipeline物件
        :param crawler: 
        :return: 
        """
        val = crawler.settings.get('資料庫的名稱 必須全都大寫')#在settings中查詢DB的配置
        return cls(val)

    def open_spider(self,spider):#例如開啟資料庫
        """
        爬蟲開始執行時,呼叫
        :param spider: 
        :return: 
        """
        print('000000')

    def close_spider(self,spider):#例如關閉資料庫
        """
        爬蟲關閉時,被呼叫
        :param spider: 
        :return: 
        """
        print('111111')

最後別忘了在settings中配置好ITEM_PIPELINES = { 'shan.pipelines.ShanPipeline': 300, }