初認識Scrapy-Item Pipeline

5260 ワード

文書ディレクトリ
  • 1. 前言
  • 2. カスタムitem pipeline
  • 3. 例
  • 4. 繰り返しフィルタ
  • 5. item pipelineコンポーネント
  • をアクティブにする
  • 6. 参考文献
  • 1.はじめにitemspiderによって捕捉された後、それはItem Pipelineに送信され、このパイプはいくつかの順序で実行されるコンポーネントによって処理される.
    item pipeline Pythonのクラスである.それらはitemを受信し、それに対して操作を行い、プロジェクトがパイプを通過し続けるべきかどうか、または削除して処理しないべきかどうかを決定する.item pipelineの典型的な用途は次のとおりです.
  • HTMLデータ
  • をクリーンアップする.
  • キャプチャされたデータの検証(アイテムに特定のフィールドが含まれているかどうかを確認)
  • 重複をチェック(削除)
  • は、取得したアイテムをデータベースに
  • 格納する.
    2.カスタムitem pipeline
    item pipeline pythonクラスであり、以下の方法を実装する必要があります.
    process_item(self, item, spider):
    	#      item pipeline      。
    	pass
    	
    open_spider(self, spider)#  spider        。
    	pass
    
    close_spider(self, spider):
    	#  spider        
    	pass
    
    from_crawler(cls, crawler):
    	#     ,   crawler    pipeline  。
    	pass
    

    3.例
  • itemフィールドの検証および不合格item
  • の削除
  • itemjsonファイル
  • に書き込む.
  • itemMongoDB
  • に預ける.
    詳細はScrapy公式ドキュメント-Item Pipelineを参照
    4.繰り返しフィルタ
    処理された繰り返しitemを検索して削除します.itemに一意のIDがあると仮定しますが、spiderは同じIDを複数返します.
    from scrapy.exceptions import DropItem
    
    class DuplicatesPipeline(object):
    
        def __init__(self):
            self.ids_seen = set()
    
        def process_item(self, item, spider):
            if item['id'] in self.ids_seen:
                raise DropItem("Duplicate item found: %s" % item)
            else:
                self.ids_seen.add(item['id'])
                return item
    

    5.item pipelineコンポーネントをアクティブにする
    アイテムパイプアセンブリをアクティブにするには、次の例に示すように、クラスをitemの設定に追加する必要があります.
    ITEM_PIPELINES = {
        'myproject.pipelines.PricePipeline': 300,
        'myproject.pipelines.JsonWriterPipeline': 800,
    }
    

    この設定でクラスに割り当てられた整数値は、itemが低い順から高い順に実行される実行順序を決定します.習慣的にこれらの数字を0-1000の範囲内に定義します.
    6.参考文献
    [1]Scrapy公式文書-Item Pipeline