Pythonクローラー学習(7)Scrapyクローラーフレームワークの詳細な説明

(6)スクレイピークローラーフレームワーク

(1)スクレイピークローラーフレーム構造

  • Scrapyは関数ライブラリではなく、クローラーフレームワークです。
  • クローラーフレームワークは、クローラー機能を実装するソフトウェア構造と機能コンポーネントのコレクションです。
  • クローラーフレームワークは、ユーザーがプロフェッショナルなWebクローラーを実現するのに役立つ半完成品です。

ここに画像の説明を挿入

  • 構造を見てください:分散、「5 + 2」構造
  • プロセスを見てください:データフロー

1.データフローのパス

  1. エンジンがクモからクロールリクエストを取得
  2. エンジンはクロール要求をスケジューラーに転送してスケジュールを設定します
  3. エンジンはスケジューラからクロールする次のリクエストを取得します
  4. エンジンがミドルウェアを介してクローラーリクエストをダウンローダーに送信する
  5. Webページをクロールした後、ダウンローダーは応答を形成し、ミドルウェアを介してエンジンに送信します
  6. エンジンはミドルウェアを介して処理するために受信した応答をSpiderに送信します
  7. スパイダーは応答を処理した後、スクレイピングされたアイテムとエンジンへの新しいクロール要求を生成します
  8. エンジンがクロールアイテムをアイテムパイプライン(フレーム出口)に送信します
  9. エンジンがクロール要求をスケジューラに送信します

2.データフローの入口と出口

  • エンジンは各モジュールのデータフローを制御し、リクエストが空になるまで、進行中のスケジューラから継続的にクロールリクエストを取得します

  • フレームワークの入り口:スパイダーの最初のクロールリクエスト

  • フレームのエクスポート:アイテムパイプライン

3.モジュール分析

  1. エンジン
    • すべてのモジュール間のデータフローを制御する
    • 条件に基づいてイベントをトリガーする
    • ユーザーによる変更なし
  2. ダウンローダー
    • リクエストに応じてウェブページをダウンロード
    • ユーザーによる変更なし
  3. スケジューラー
    • すべてのクロールリクエストの管理をスケジュールする
    • ユーザーによる変更なし
  4. ダウンローダーミドルウェア
    • Engine、Scheduler、Downloader間のユーザー設定可能な制御を実装
    • リクエスト、レスポンスの変更、破棄、追加
    • ユーザーは構成コードを記述できます
  5. クモ
    • ダウンローダーによって返された応答を解析します(応答)
    • 削ったアイテムを生成する
    • 追加のクロールリクエストを生成する(リクエスト)
    • ユーザーに構成コードの記述を要求する
  6. アイテムパイプライン
    • クモが生成したクロールアイテムのパイプライン処理
    • パイプラインと同様の一連の操作で構成され、各操作はアイテムパイプラインタイプです。
    • 可能な操作には、クロールアイテム内のHTMLデータのクリーンアップ、チェック、再チェック、およびデータベースへのデータの格納が含まれます。
    • ユーザーに構成コードの記述を要求する
  7. スパイダーミドルウェア
    • リクエストとクロールの再処理
    • 変更、破棄、要求の追加、またはアイテムのクロール
    • ユーザーは構成コードを記述できます

(2)リクエストライブラリとScrapyクローラーの比較

  • 類似点:

  • どちらもページリクエストとクロールを実行できます。これはPythonクローラーの2つの重要な技術ルートです。

  • どちらも使い勝手がよく、ドキュメントが豊富で、使いやすい

  • どちらにも、jsの処理、フォームの送信、確認コードへの応答(拡張可能)などの機能はありません。

リクエスト スクレイピー
ページレベルのクローラー サイトレベルのクローラー
関数ライブラリ フレーム
不十分な同時実行の考慮事項、パフォーマンスの低下 優れた並行性と高性能
焦点はページのダウンロードです 焦点は爬虫類の構造です
柔軟なカスタマイズ 一般的なカスタマイズは柔軟ですが、詳細なカスタマイズは困難です
始めるのはとても簡単です 始めるのは少し難しい
  • テクニカルルートの選択方法

  • 非常に小さな要件、リクエストライブラリ

  • 少なすぎない需要、Scrapyフレームワーク

  • 高度なカスタマイズ(規模に関係なく)、自作のフレームワークリクエスト> Scrapy

(3)Scrapyクローラーの共通コマンド

  • Scrapyコマンドライン

    scrapy -hコマンド

    scrapy [options] [args] Scrapyコマンドライン形式

ここに画像の説明を挿入

  • コマンドライン(グラフィカルインターフェイスではない)は自動化が簡単で、
    データ制御のスクリプト作成やデータベースへのデータの保存に適しています。
    • ユーザーに構成コードの記述を要求する
  1. スパイダーミドルウェア
    • リクエストとクロールの再処理
    • 変更、破棄、要求の追加、またはアイテムのクロール
    • ユーザーは構成コードを記述できます

(2)リクエストライブラリとScrapyクローラーの比較

  • 類似点:

  • どちらもページリクエストとクロールを実行できます。これはPythonクローラーの2つの重要な技術ルートです。

  • どちらも使い勝手がよく、ドキュメントが豊富で、使いやすい

  • どちらにも、jsの処理、フォームの送信、確認コードへの応答(拡張可能)などの機能はありません。

リクエスト スクレイピー
ページレベルのクローラー サイトレベルのクローラー
関数ライブラリ フレーム
不十分な同時実行の考慮事項、パフォーマンスの低下 優れた並行性と高性能
焦点はページのダウンロードです 焦点は爬虫類の構造です
柔軟なカスタマイズ 一般的なカスタマイズは柔軟ですが、詳細なカスタマイズは困難です
始めるのはとても簡単です 始めるのは少し難しい
  • テクニカルルートの選択方法

  • 非常に小さな要件、リクエストライブラリ

  • 少なすぎない需要、Scrapyフレームワーク

  • 高度なカスタマイズ(規模に関係なく)、自作のフレームワークリクエスト> Scrapy

(3)Scrapyクローラーの共通コマンド

  • Scrapyコマンドライン

    scrapy -hコマンド

    scrapy [options] [args] Scrapyコマンドライン形式

[外部リンク画像を転送しています...(img-QQ2eu90d-1587603530585)]

  • コマンドライン(グラフィカルインターフェイスではない)は自動化が容易で、スクリプト制御に適しています
  • 本質的に、Scrapyはプログラマー向けであり、(インターフェースではなく)関数がより重要です
元の記事を10件公開 Like1 Visits 131

おすすめ

転載: blog.csdn.net/qq_39419113/article/details/105699274
おすすめ