ホームページ >バックエンド開発 >Python チュートリアル >Python クロール フレームワーク Scrapy アーキテクチャ

Python クロール フレームワーク Scrapy アーキテクチャ

高洛峰
高洛峰オリジナル
2017-02-25 13:32:531276ブラウズ

私は最近 Python を学習しており、Python を使用してデータをキャプチャする方法も学んでいるので、非常に人気のある Python クロール フレームワークである Scrapy を発見しました。このツールをより有効に活用するために、Scrapy のアーキテクチャを学びましょう。

1. 概要

次の図は、Scrapy の一般的なアーキテクチャを示しています。これには、主要コンポーネントとシステムのデータ処理プロセス (緑色の矢印で示されている) が含まれます。各コンポーネントの役割とデータ処理プロセスを一つずつ説明しましょう。

Python抓取框架 Scrapy的架构

2. コンポーネント

1. Scrapy エンジン

Scrapy エンジンは、システム全体のデータ処理プロセスを制御し、トランザクション処理をトリガーするために使用されます。詳細については、以下のデータ処理プロセスをご覧ください。

2. スケジューラ

スケジューラは、Scrapy エンジンからリクエストを受け取り、キューに並べ替え、Scrapy エンジンがリクエストを発行した後にそれらを返します。

3. ダウンローダー

ダウンローダーの主な役割は、Web ページをクロールし、Web コンテンツを Spider に返すことです。

4. スパイダー

スパイダーは、Web ページを解析し、指定された URL によって返されたコンテンツをクロールするために Scrapy ユーザー自身によって定義されたクラスです。各スパイダーは、ドメイン名またはドメイン名のグループを処理できます。つまり、特定の Web サイトのクロールと解析のルールを定義するために使用されます。

スパイダーのクロールプロセス全体 (サイクル) は次のとおりです:

1) まず、最初の URL に対する最初のリクエストを取得し、リクエストが返されたときにコールバック関数を呼び出します。最初のリクエストは、start_requests() メソッドを呼び出すことによって行われます。このメソッドは、デフォルトで start_urls の URL からリクエストを生成し、解析を実行してコールバック関数を呼び出します。
2).コールバック関数では、Web ページの応答を解析し、アイテム オブジェクト、リクエスト オブジェクト、またはその両方の反復を返すことができます。これらのリクエストにはコールバックも含まれており、Scrapy によってダウンロードされ、指定されたコールバックで処理されます。
3). コールバック関数では、Xpath セレクターを使用して Web サイトのコンテンツを解析し (ただし、BeautifuSoup、lxml、またはその他の任意のプログラムを使用することもできます)、解析されたデータ項目を生成します。
4) 最後に、スパイダーから返されたプロジェクトは通常、プロジェクト パイプラインに送られます。

5. アイテム パイプライン

プロジェクト パイプラインの主な責任は、スパイダーによって Web ページから抽出されたアイテムを処理することです。彼の主なタスクは、データを明確にし、検証し、保存することです。ページがスパイダーによって解析されると、ページはプロジェクト パイプラインに送信され、データはいくつかの特定のシーケンスを通じて処理されます。各プロジェクト パイプラインのコンポーネントは、単純なメソッドを備えた Python クラスです。彼らはプロジェクトを取得してアプローチを実行しますが、プロジェクト パイプラインの次のステップに進む必要があるか、処理せずに破棄する必要があるかを判断する必要もあります。

プロジェクト パイプラインは通常、次のプロセスを実行します:

1) 解析されたデータを確認します (プロジェクトに必要なフィールドが含まれているかどうかを確認します)
3)。重複しています) )
4). 解析されたデータをデータベースに保存します

6. ダウンローダーミドルウェア

ダウンロードミドルウェアは、主にリクエストとレスポンスを処理する、Scrapy エンジンとダウンローダーの間に位置するフックフレームワークです。 Scrapy エンジンとダウンローダーの間。これは、Scrapy の機能を拡張するためのカスタム コード方法を提供します。ダウンロード ブローカーは、リクエストとレスポンスを処理するフック フレームワークです。これは、Scrapy をグローバルに制御できる軽量の低レベル システムです。

7. Spider ミドルウェア (Spider ミドルウェア)

Spider ミドルウェアは、Scrapy エンジンとスパイダー間のフック フレームワークで、スパイダーの応答入力と要求出力を処理します。これは、カスタム コードを使用して Scrapy の機能を拡張する方法を提供します。スパイダー ミドルウェアは、Scrapy のスパイダー処理メカニズムにフックするフレームワークで、スパイダーに送信されたリクエストを処理し、スパイダーが取得した応答コンテンツとアイテムを返すカスタム コードを挿入できます。

8. スケジューラミドルウェア (スケジューリングミドルウェア)

スケジューリングミドルウェアは、Scrapy エンジンとスケジューラの間のミドルウェアであり、Scrapy エンジンからスケジューラに送信されるリクエストと応答を処理することです。彼は、Scrapy の機能を拡張するカスタム コードを提供しています。

3. データ処理プロセス

Scrapy のデータ処理プロセス全体は Scrapy エンジンによって制御され、その主な操作方法は次のとおりです。

エンジンはドメイン名を開き、スパイダーはそのドメイン名を処理し、最初にクロールされた URL を取得します。
エンジンはクロールする必要がある最初の URL をスパイダーから取得し、それをスケジュール内のリクエストとしてスケジュールします。
エンジンは、スケジューラからクロールする次のページを取得します。
スケジュールは次にクロールされた URL をエンジンに返し、エンジンはそれをダウンロード ミドルウェアを通じてダウンローダーに送信します。
Web ページがダウンローダーによってダウンロードされると、応答コンテンツがダウンロード ミドルウェアを通じてエンジンに送信されます。
エンジンはダウンローダーから応答を受信し、処理のためにスパイダー ミドルウェアを通じてスパイダーに送信します。
スパイダーは応答を処理してクロールされたアイテムを返し、その後新しいリクエストをエンジンに送信します。
エンジンはプロジェクト パイプラインをキャプチャし、スケジューラにリクエストを送信します。
システムは、スケジュール内のリクエストがなくなるまで 2 番目のステップに続く操作を繰り返し、その後エンジンをドメインから切断します。

4. ドライバー

Scrapy は、Twisted によって作成された人気の Python イベント駆動型ネットワーク フレームワークであり、ノンブロッキングの非同期処理を使用します。

以上がこの記事の全内容です。皆さんの学習に役立つことを願っています。また、皆さんも PHP 中国語 Web サイトをサポートしていただければ幸いです。

Python クロール フレームワーク Scrapy のアーキテクチャに関連するその他の記事については、PHP 中国語 Web サイトに注目してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。