Scrapyパイプライン

Scrapyザ・パイプラインは、私たちは、多くの場合、実際の開発/検証データ、重複排除やデータストレージをきれいにするためにそれを使用し、プロセスデータへの機能を提供してくれます。パイプラインプロジェクトの様々な存在する、各パイプラインは、いくつかのアイテムの処理方法を含むクラスです。アイテムが順次パイプラインアイテムが破棄場合、後者はパイプラインに行われていない前記パイプラインは、アイテムを受信しない順序で送信されます。

ゼロ、カスタムパイプライン

カスタムパイプラインは、単に指定された方法を達成するために、実際には非常に簡単です。

  1. process_item(自己、アイテム、クモ)
  • 説明:このメソッドは実装される必要があり、データの処理の作業をこの方法で実施される、方法を返す辞書、アイテム、ツイストはDropItemまたは異常を据え置き。
  • パラメータ:
    • 項目:項目をクロールします。
    • クモ:使用スパイダー項目を登るのにかかる時間。

ヒント:アイテムのprocess_item方式の低下場合は、項目項目は、後続のパイプラインに配信されることはありません。

  1. open_spider(自己、クモ)
  • 説明:クローラーが実行を開始には、ファイルを開いて、このようなデータベースを開くと、この方法では、いくつかの初期化を実行されます。
  • パラメータ:
    • クモ:現在使用中の蜘蛛
  1. close_spider(自己、クモ)
  • 説明:クローラーが閉じている場合、この方法は、そのようなクローズファイルなど、データベースを閉じるように、フォローアップ作業の数で実行されます。
  • パラメータ:
    • クモ:現在使用中の蜘蛛
  1. from_crawl(自己、クローラ)
  • 説明:メソッドのクラスメソッドクローラを初期化することによって、オブジェクトパイプライン・インスタンスを返します。私たちは、コアコンポーネントScrapyクローラのすべてを戻ることができます。

特別なパイプライン

いくつかのプロジェクトでは、データのクロールページにしたい、だけでなく、ファイルや画像をクロールし、ローカルに保存していないだけ。その後、我々は、パイプラインの特別Scrapy使用する必要があります。FilesPipelineとImagesPipelineを、彼らは同じ方法および構造のいくつかを持って、私たちは、このパイプラインはMediaPipelineで呼び出します。FilesPipeline ImagesPipelineと、以下の機能が含まれています。

  • ダウンロードされたデータの回避重複
  • 指定された保管場所

ImagesPipelineは、次の機能も含まれています。

  • 写真はJPG形式またはRGB形式に変換しました
  • サムネイルを生成
  • 最大/最小の幅と高さの写真のダウンロード制限

ヒント:Scrapyパイプライン方式を避けるためですと、キューにダウンロードするファイルのURLを複製、および関連すると回答、これ再ダウンロードを避けること。

  1. FilesPipeline

ワークフローFilesPipelineのダウンロードファイルには、4つのステップの合計は非常に簡単です:

  • URL保存爬虫類は、項目を取得しにfile_urlsにファイルをダウンロードしたいです。
  • アイテムのクローラは、パイプラインの内部に戻りました。
  • 項目FilesPipeline順に転送すると、URLは内蔵のスケジューラとダウンローダにダウンロードされfile_urls。あなたは、ファイルのダウンロードが完了するか、エラーが、アイテムをアンロックしてダウンロードする必要があるまで、この時点では項目がロックされています。
  • ダウンロードが完了すると、結果は、ファイル内のファイルの一覧、各データ型の辞書を保存されます。
  1. ImagesPipeline

ImagesPipelineは、そのステップのほとんどとFilesPipeline同じことを言うことですFilesPipelineから継承されます。唯一の違いは、ImagesPipelineがダウンロードは、画像への結果の保存、完了、image_urls URLに保存された画像をダウンロードする必要がありますです。

ヒント:FilesPipelineとImagesPipelineがより一般的に使用されているため、パイプラインは、だけでなく、これらの二つの特別なパイプラインを含み、私はここで説明しなければならなかったので。その他のパイプラインScrapy構築されますが、特定の文書を見るために公式サイトに行くことができます。

私たちは、あなたがパイプラインを書き終えた後、私たちはパイプラインがScrapyに注入書き込みますsettings.pyファイルに登録する必要があります。

ITEM_PIPELINS= {
  '自定义Pipeline 路径':'优先级'
}

第二に、要約

この記事は主に理論的な知識パイプラインに、非常に短いが、しかし、この知識は、知識パイプラインの中核です。次のセクションでは、私は、コードの形式で透けてパイプラインを使用します。

204元記事公開 ウォンの賞賛101 ビューに35万+を

おすすめ

転載: blog.csdn.net/gangzhucoll/article/details/104046855