(6)スクレイピークローラーフレームワーク
(1)スクレイピークローラーフレーム構造
- Scrapyは関数ライブラリではなく、クローラーフレームワークです。
- クローラーフレームワークは、クローラー機能を実装するソフトウェア構造と機能コンポーネントのコレクションです。
- クローラーフレームワークは、ユーザーがプロフェッショナルなWebクローラーを実現するのに役立つ半完成品です。
- 構造を見てください:分散、「5 + 2」構造
- プロセスを見てください:データフロー
1.データフローのパス
- エンジンがクモからクロールリクエストを取得
- エンジンはクロール要求をスケジューラーに転送してスケジュールを設定します
- エンジンはスケジューラからクロールする次のリクエストを取得します
- エンジンがミドルウェアを介してクローラーリクエストをダウンローダーに送信する
- Webページをクロールした後、ダウンローダーは応答を形成し、ミドルウェアを介してエンジンに送信します
- エンジンはミドルウェアを介して処理するために受信した応答をSpiderに送信します
- スパイダーは応答を処理した後、スクレイピングされたアイテムとエンジンへの新しいクロール要求を生成します
- エンジンがクロールアイテムをアイテムパイプライン(フレーム出口)に送信します
- エンジンがクロール要求をスケジューラに送信します
2.データフローの入口と出口
-
エンジンは各モジュールのデータフローを制御し、リクエストが空になるまで、進行中のスケジューラから継続的にクロールリクエストを取得します
-
フレームワークの入り口:スパイダーの最初のクロールリクエスト
-
フレームのエクスポート:アイテムパイプライン
3.モジュール分析
- エンジン
- すべてのモジュール間のデータフローを制御する
- 条件に基づいてイベントをトリガーする
- ユーザーによる変更なし
- ダウンローダー
- リクエストに応じてウェブページをダウンロード
- ユーザーによる変更なし
- スケジューラー
- すべてのクロールリクエストの管理をスケジュールする
- ユーザーによる変更なし
- ダウンローダーミドルウェア
- Engine、Scheduler、Downloader間のユーザー設定可能な制御を実装
- リクエスト、レスポンスの変更、破棄、追加
- ユーザーは構成コードを記述できます
- クモ
- ダウンローダーによって返された応答を解析します(応答)
- 削ったアイテムを生成する
- 追加のクロールリクエストを生成する(リクエスト)
- ユーザーに構成コードの記述を要求する
- アイテムパイプライン
- クモが生成したクロールアイテムのパイプライン処理
- パイプラインと同様の一連の操作で構成され、各操作はアイテムパイプラインタイプです。
- 可能な操作には、クロールアイテム内のHTMLデータのクリーンアップ、チェック、再チェック、およびデータベースへのデータの格納が含まれます。
- ユーザーに構成コードの記述を要求する
- スパイダーミドルウェア
- リクエストとクロールの再処理
- 変更、破棄、要求の追加、またはアイテムのクロール
- ユーザーは構成コードを記述できます
(2)リクエストライブラリとScrapyクローラーの比較
-
類似点:
-
どちらもページリクエストとクロールを実行できます。これはPythonクローラーの2つの重要な技術ルートです。
-
どちらも使い勝手がよく、ドキュメントが豊富で、使いやすい
-
どちらにも、jsの処理、フォームの送信、確認コードへの応答(拡張可能)などの機能はありません。
リクエスト | スクレイピー |
---|---|
ページレベルのクローラー | サイトレベルのクローラー |
関数ライブラリ | フレーム |
不十分な同時実行の考慮事項、パフォーマンスの低下 | 優れた並行性と高性能 |
焦点はページのダウンロードです | 焦点は爬虫類の構造です |
柔軟なカスタマイズ | 一般的なカスタマイズは柔軟ですが、詳細なカスタマイズは困難です |
始めるのはとても簡単です | 始めるのは少し難しい |
-
テクニカルルートの選択方法
-
非常に小さな要件、リクエストライブラリ
-
少なすぎない需要、Scrapyフレームワーク
-
高度なカスタマイズ(規模に関係なく)、自作のフレームワークリクエスト> Scrapy
(3)Scrapyクローラーの共通コマンド
-
Scrapyコマンドライン
scrapy -hコマンド
scrapy [options] [args] Scrapyコマンドライン形式
- コマンドライン(グラフィカルインターフェイスではない)は自動化が簡単で、
データ制御のスクリプト作成やデータベースへのデータの保存に適しています。- ユーザーに構成コードの記述を要求する
- スパイダーミドルウェア
- リクエストとクロールの再処理
- 変更、破棄、要求の追加、またはアイテムのクロール
- ユーザーは構成コードを記述できます
(2)リクエストライブラリとScrapyクローラーの比較
-
類似点:
-
どちらもページリクエストとクロールを実行できます。これはPythonクローラーの2つの重要な技術ルートです。
-
どちらも使い勝手がよく、ドキュメントが豊富で、使いやすい
-
どちらにも、jsの処理、フォームの送信、確認コードへの応答(拡張可能)などの機能はありません。
リクエスト | スクレイピー |
---|---|
ページレベルのクローラー | サイトレベルのクローラー |
関数ライブラリ | フレーム |
不十分な同時実行の考慮事項、パフォーマンスの低下 | 優れた並行性と高性能 |
焦点はページのダウンロードです | 焦点は爬虫類の構造です |
柔軟なカスタマイズ | 一般的なカスタマイズは柔軟ですが、詳細なカスタマイズは困難です |
始めるのはとても簡単です | 始めるのは少し難しい |
-
テクニカルルートの選択方法
-
非常に小さな要件、リクエストライブラリ
-
少なすぎない需要、Scrapyフレームワーク
-
高度なカスタマイズ(規模に関係なく)、自作のフレームワークリクエスト> Scrapy
(3)Scrapyクローラーの共通コマンド
-
Scrapyコマンドライン
scrapy -hコマンド
scrapy [options] [args] Scrapyコマンドライン形式
[外部リンク画像を転送しています...(img-QQ2eu90d-1587603530585)]
- コマンドライン(グラフィカルインターフェイスではない)は自動化が容易で、スクリプト制御に適しています
- 本質的に、Scrapyはプログラマー向けであり、(インターフェースではなく)関数がより重要です