この記事では、Python クローラー フレームワーク Scrapy について簡単に紹介します。これには一定の参考価値があります。困っている友人は参照してください。お役に立てば幸いです。
Scrapy フレームワーク
Scrapy は、Web サイトのデータをクロールし、構造データを抽出するために純粋な Python で書かれたアプリケーション フレームワークであり、幅広い用途に使用できます。
フレームワークの機能を利用すると、ユーザーはいくつかのモジュールをカスタマイズして開発するだけで、Web コンテンツやさまざまな画像をクロールするクローラーを簡単に実装できるため、非常に便利です。
Scrapy は、Twisted'twɪstɪd 非同期ネットワーク フレームワークを使用してネットワーク通信を処理し、非同期フレームワークを自分で実装することなくダウンロードを高速化できます。また、さまざまなミドルウェア インターフェイスが含まれており、さまざまなニーズに柔軟に対応できます。
Scrapy アーキテクチャ図 (緑の線はデータ フローの方向):
95625f65089e4bc98a269cfda6701597.png
Scrapy エンジン: Spider、ItemPipeline、Downloader、および間の通信を担当します。スケジューラー、信号、データ転送など
スケジューラ (スケジューラ): エンジンによって送信されたリクエスト リクエストを受け取り、それらを特定の方法で分類し、キューに入力し、エンジンがリクエストを必要とするときにエンジンに返す責任があります。
ダウンローダー (ダウンローダー): Scrapy エンジン (エンジン) によって送信されたすべてのリクエストをダウンロードし、取得したレスポンスを Scrapy エンジン (エンジン) に返し、処理のために Spider に渡されます。
Spider (クローラー): すべてのレスポンスの処理、データの分析と抽出、項目フィールドで必要なデータの取得、および従う必要がある URL のエンジンへの送信を担当し、その後、スケジューラー (スケジューラー) に再度入ります。 ,
Item Pipeline (パイプライン): Spider から取得したアイテムの処理と後処理 (詳細な分析、フィルタリング、保存など) を実行します。
ダウンローダー ミドルウェア (ダウンロードミドルウェア):ダウンロード機能を拡張するためにカスタマイズできるコンポーネントとみなすことができます。
Spider Middlewares (スパイダーミドルウェア): 拡張機能と操作エンジン、およびスパイダー間の中間通信 (スパイダーに入るレスポンスやスパイダーからのリクエストなど) をカスタマイズできる機能コンポーネントとして理解できます。 )
b847d7fa404a404ca0a656028ada63b5.png
Python を学習する過程で多くの質問や問題が発生した場合は、-q-u-n 227 -435-450 を追加できます。ソフトウェアのビデオ資料は無料です。
Scrapy 操作プロセス
コードが記述され、プログラムが実行され始めます...
エンジン: こんにちは!スパイダー、どの Web サイトに取り組んでいますか?
スパイダー: 上司は私に xxxx.com を担当してほしいと思っています。
エンジン: 処理する必要がある最初の URL を教えてください。
スパイダー: はい、最初の URL は xxxxxxx.com です。
エンジン: こんにちは!スケジューラーさん、キューの整理を手伝ってほしいというお願いがあります。
スケジューラ: OK、処理中です。お待ちください。
エンジン: こんにちは!スケジューラさん、処理したリクエストを教えてください。
スケジューラ: どうぞ、これは私が処理したリクエストです
エンジン: こんにちは!ダウンローダーさん、ボスのダウンロード ミドルウェア設定に従ってこのリクエストをダウンロードするのを手伝ってください。リクエスト
ダウンローダー: OK!さあ、ダウンロードはこちらです。 (失敗した場合: 申し訳ありませんが、このリクエストのダウンロードは失敗しました。その後、エンジンはこのリクエストのダウンロードが失敗したことをスケジューラに伝えます。記録してください。後でダウンロードします。)
エンジン: こんにちは!スパイダー、これはダウンロードされ、ボスのダウンロード ミドルウェアに従って処理されたものです。自分で処理できます (注意! ここでの応答はデフォルトで def parse() 関数によって処理されます)
スパイダー: (データ処理後にフォローアップする必要がある URL の場合)、こんにちは!エンジン、ここには 2 つの結果があります。これはフォローアップする必要がある URL で、これは私が取得したアイテム データです。
エンジン: こんにちは!パイプライン ここにアイテムがあります。処理を手伝ってください。スケジューラー!これは、たどる必要がある URL です。対処を手伝ってください。次に、上司が必要とするすべての情報を取得するまで、ステップ 4 からのループを開始します。
パイプライン「スケジューラ: OK、今すぐ実行してください!」 ######知らせ!スケジューラにリクエストがない場合にのみ、プログラム全体が停止します (つまり、Scrapy はダウンロードに失敗した URL も再ダウンロードします)。
Scrapy クローラーを作成するには 4 つの手順が必要です。
新しいプロジェクト (scrapy startproject xxx): 新しいクローラー プロジェクトを作成します
目標をクリアします (items.py を書きます): クロールしたい目標をクリアします
Make aクローラー (spiders/xxspider.py): Web ページのクロールを開始するクローラーを作成します
ストレージ コンテンツ (pipelines.py): クロールされたコンテンツを保存するパイプラインを設計します
以上がPython クローラー フレームワーク Scrapy の簡単な紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。