技術共有

Scrapy はクローラーを書き込みます

2024-07-11

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

Scrapy は、Web サイトのデータをクロールし、構造化情報を抽出するための Python フレームワークです。

1. Scrapy の概要

1.エンジン
– Scrapy のエンジンは、データ フローの制御とイベントのトリガーの中核です。スパイダーによって送信されたリクエストと受信した応答を管理し、スパイダーによって生成されたアイテムを処理します。エンジンは Scrapy の動作の原動力です。

2.スケジューラー
– スケジューラは、エンジンによって送信されたリクエストを受信し、特定のポリシー (優先度、深さなど) に従ってそれらのリクエストをキューに入れる責任があります。エンジンが新しいリクエストを必要とする場合、スケジューラはキューからリクエストを取得してエンジンに返します。これにより、リクエストが確実に順序正しく処理されます。

3. ダウンローダー
– ダウンローダーは、Scrapy エンジンによって送信されたリクエストに基づいて Web コンテンツをダウンロードする責任があります。 HTTP プロトコルを使用して Web サイトサーバーと通信し、ダウンロードされた Web ページコンテンツを応答として Scrapy エンジンに返します。ダウンローダーは、Web ページ データを取得するための Scrapy のコア コンポーネントです。

4.クモ
– スパイダーは、クローリング ロジックを定義し、Web ページのコンテンツを解析するために使用される Scrapy のコンポーネントです。これらは、定義されたルールに基づいて最初のリクエストを生成し、ダウンローダーから返されたレスポンスを処理して、必要なデータ (アイテム) を抽出するか、さらなるクロールのための新しいリクエスト (リクエスト) を生成します。

5.アイテムパイプライン
– アイテム パイプラインは、Spider によって抽出されたアイテムの処理を担当します。データのクリーニング、データの整合性の検証、データベースやファイルへのデータの保存など、さまざまなタスクを実行できます。複数のパイプラインを定義することで、さまざまなニーズに合わせてデータを柔軟に処理できます。

6. ダウンローダーミドルウェア
– ダウンローダー ミドルウェアは Scrapy エンジンとダウンローダーの間に位置し、リクエストと応答を処理するために使用されます。リクエスト (リクエスト ヘッダーの追加、プロキシの設定など) またはレスポンス (圧縮処理、リダイレクト処理など) を変更することで、Scrapy が Web サイトとやり取りする方法を制御できます。ミドルウェアは、Scrapy の機能を拡張するための重要なメカニズムです。

7. スパイダーミドルウェア
– Spider ミドルウェアは Scrapy エンジンと Spider の間に位置し、Spider の入力 (つまり、応答) と出力 (つまり、アイテムと新しいリクエスト) を処理するために使用されます。応答を変更または破棄したり、例外を処理したり、スパイダーによって生成されたアイテムやリクエストを変更または破棄したりすることもできます。 Spider ミドルウェアは、Spider の実行中にカスタム関数を挿入する機能を提供します。

各コンポーネント間のデータ フローを次の図に示します。
ここに画像の説明を挿入します

  • 最初の URL から開始して、スケジューラーはそれをダウンロードのためにダウンローダーに渡します。
  • ダウンロード後、分析のために Spider に渡されます。
  • Spider によって分析される結果には 2 種類があります。
  • 1 つは、「次のページ」リンクなど、さらにクロールする必要があるリンクで、スケジューラに返されます。
  • もう 1 つは保存する必要があるデータで、後処理 (詳細な分析、フィルタリング、保存など) のためにアイテム パイプラインに送信されます。

2.scrapyをインストールする

pip install scrapy