クローラーを本当に理解していますか?これを読むと、Web クローラーについてより深く、より包括的に理解できるようになります。

序文

クローラーは非常に興味深いテクノロジーです。クローラー テクノロジーを使用すると、他の人が入手できないものや、支払いが必要なものを入手できます。また、大量のデータを自動的にクロールして保存することもでき、面倒な作業を手作業で行う時間とエネルギーを削減できます。

プログラミングを学ぶ人は多いと言えますが、実際にクローラーで遊んでいないとプログラミングの面白さはかなり薄れてしまいますが、アマチュア、個人、プロのクローラーを問わず、クローラーの世界は確かに非常にエキサイティングです。

今日はクローラーについて簡単に説明しますが、その目的は、クローラーを学習する準備をしている人、または始めたばかりの友達に、クローラーについてより深く、より包括的に理解してもらうことです。

ここに画像の説明を挿入します


記事ディレクトリ
    • 序文
    • 1. 爬虫類を理解する
      • 1. クローラーとは何ですか?
      • 2. クローラーの分類
      • 3.ロボットプロトコル
    • 2. クローラーの基本的な処理
      • 1. クローラーの4ステップ
      • 2.リクエストとレスポンス
    • 3. リクエストを理解する
      • 1. リクエスト方法
      • 2.リクエストURL
      • 3. リクエストヘッダー
      • 4. リクエストボディ
      • 5. リクエストの実践的な見方
    • 4. 応答を理解する
      • 1.対応状況
      • 2. レスポンスヘッダー
      • 3. レスポンスボディ
    • 5. クローラーはどのような種類のデータを取得できますか?
    • 6. データを解析するにはどうすればよいですか?
    • 7. データを保存するにはどうすればよいですか?

1. 爬虫類を理解する

1. クローラーとは何ですか?

有名なクローラーを一文で紹介します。Web サイトをリクエストしてデータを抽出する自動プログラム

クローラーを分解して理解してみましょう。

Web サイトのリクエストとは、Web サイトにリクエストを送信することを意味します。たとえば、Baidu にアクセスし、キーワード「Python」を検索します。このとき、ブラウザは Web サイトにリクエストを送信します。

データを抽出します。データには、写真、テキスト、ビデオなどが含まれており、これらはすべてデータと呼ばれます。リクエストを送信すると、Web サイトは検索結果を表示します。これは実際にはデータを返します。この時点で、抽出できます。データ;

自動化されたプログラム、つまり私たちが作成したコードは、返された画像を一括でダウンロードして保存するなどのプロセス データの自動抽出を実現し、手作業を 1 つずつ置き換えます。

ここに画像の説明を挿入します


2. クローラーの分類

使用シナリオに応じて、クローラーは次の 3 つのカテゴリに分類できます。

①ユニバーサル クローラー (大規模で包括的)
強力で収集範囲が広く、検索エンジンでよく使用されます。たとえば、Baidu Browser は大規模なクローラー プログラムです。

②集中型クローラー(小型ながら高機能)
機能は比較的シンプルで、Web サイトにアクセスして特定のデータを一括で取得するなど、特定の Web サイトの特定のコンテンツのみをクロールします。 、これは、私たち個人が最もよく使用するクローラーでもあります

③増分クローラー (更新されたコンテンツのみを収集します)
これは実際にはクローラーに焦点を当てた反復的なクローラーです。更新されたデータのみを収集し、古いデータは収集しません。収集は常にと同等です。要件を満たすデータが更新されている限り、新しいデータは自動的にクロールされます。

ここに画像の説明を挿入します


3.ロボットプロトコル

クローラーの中でも注意が必要なロボットと呼ばれるプロトコルがあり、「Web クローラー除外基準」とも呼ばれ、Web サイトがクロールできるものとできないものを通知する機能があります。

このロボット プロトコルはどこで確認できますか?通常の状況では、Web サイトのホームページの URL の後に /robots.txt を追加することで直接表示できます。たとえば、Baidu の Robots プロトコルは https://www.baidu.com/robots.txt にあります。クロールを規定する URL が多数あることに注意してください。たとえば、Disallow:/shifen/ は、現在の Disallow:/shifen と Disallow:/shifen の下のサブディレクトリ Web ページをクロールできないことを意味します。

ここに画像の説明を挿入します
実際、このロボット契約は紳士協定です。クローラーにとって、これは基本的に口頭での契約です。違反した場合は法的責任を問われる可能性がありますが、その場合は責任を負いません。これに違反すると、クローラーはデータをクロールできなくなるため、通常は双方とも見て見ぬふりをし、傲慢になりすぎないようにしてください。

ここに画像の説明を挿入します


2. クローラーの基本的な処理

1. クローラーの4ステップ

爬虫類はどのように働くのですか?クローラー プログラムは、大きく次の 4 つのステップに分けることができます。

①リクエストの開始
HTTP ライブラリを通じてターゲット サイトへのリクエストを開始します。つまり、リクエストを送信します。リクエストには追加のヘッダーやその他の情報を含めることができ、サーバーを待ちます。返事する。

②応答内容を取得する
サーバーが正常に応答できれば、応答を取得します。応答の内容は、取得するページのコンテンツです。種類には、HTML、 Json 文字列およびバイナリ データ (写真やビデオなど) およびその他のタイプ。

③コンテンツを解析する
取得されたコンテンツは HTML である可能性があり、正規表現と Web ページ解析ライブラリを使用して解析できます。これは、Json オブジェクト解析に直接変換できる Json の場合もあれば、保存またはさらに処理できるバイナリ データの場合もあります。

④データの保存
保存データには、テキスト保存、データベースへの保存、特定の形式のファイルとして保存など、さまざまな形式があります。

基本的に、クローラーは次の 4 つのステップを実行します。


2.リクエストとレスポンス

リクエストとレスポンスはクローラの最も重要な部分です。リクエストとレスポンスの関係は何ですか?それらの関係は次のとおりです。

ここに画像の説明を挿入します
簡単に理解すると、前述の Baidu での「Python」の検索など、コンピューターのブラウザーで何かを検索するときに、Baidu をクリックすると、Baidu のサーバーに Request リクエストが送信されます。リクエストを受け取ったサーバーは、リクエストを受信した後に判断し、リクエストが成功したかどうかなど多くの情報を含むレスポンスをコンピュータに返します。結果 (テキスト、写真、ビデオなど)。

これは簡単に理解できるはずですよね?次に、リクエストとレスポンスを詳しく見てみましょう。


3. リクエストを理解する

リクエストには何が含まれますか??これには主に次のものが含まれます。

1. リクエスト方法

リクエストメソッドは、Web サイトへの挨拶の仕方として理解できます。Web サイトからデータを取得したい場合は、Web サイトが注意を払うように、Web サイトに正しい方法で挨拶する必要があります。誰かからの何かです、あなたはまずドアをノックしてから挨拶しなければなりません、窓から直接登ると、それを見た人はあなたによって追い出されなければなりません。

ここに画像の説明を挿入します

主なリクエスト メソッドは GET と POST、HEAD/PUT/DELETE/OPTIONS などのメソッドです。最も一般的に使用されるリクエスト メソッドは GET です。


2.リクエストURL

URLとは何ですか? URL の正式名称は、Uniform Resource Locator で、例えば Web 文書、画像、ビデオなどには固有の URL があり、クローラーではそれを URL またはリンクとして理解できます。


3. リクエストヘッダー

リクエストヘッダーとは何ですか?英語名の Request Headers は、通常、ユーザー エージェント、ホスト、Cookie など、リクエストに含まれるヘッダー情報を指します。

これらは、Web サイトにリクエストを送信する際の個人情報に相当します。ここでは、対象の Web サイトがあなたがクローラー プログラムであることを認識しないように、のぞき見防止を避けるために、自分自身を偽装して一般ユーザーのふりをする必要があることがよくあります。データを正常に取得します。


4. リクエストボディ

公式の説明では、フォーム送信時のフォームデータなど、リクエスト時に追加データが送信されるとのことです。

どのように理解すればよいでしょうか?例えば、義父の家にプロポーズに行く場合、手ぶらでプロポーズすることはできませんよね?義父が娘を婚約させるためには、プロポーズをしているように見せるための何かを持参する必要があり、これは誰にとっても欠かせない共通のマナーです。

ここに画像の説明を挿入します

爬虫類の間でそれをどのように理解しますか?たとえば、一部のページでは、最初にログインする必要があるか、リクエストの内容を伝える必要があります。たとえば、Baidu ページで「Python」を検索すると、キーワード「Python」が必要なリクエスト本文になります。リクエスト本文が届いたときにのみ、Baidu はユーザーが何をしたいのかを知ります。

もちろん、リクエストボディは通常、POST リクエストメソッドで使用され、GET リクエストでは通常、URL に接続されます。最初にそれを理解するだけで十分で、後で特定のクローラを使用して理解を深めることができます。


5. リクエストの実践的な見方

リクエストの理論について説明したので、実際にリクエストがどこにあり、何が含まれているかを確認してみましょう。

Google Chrome を例に挙げると、キーワード「Python」を入力すると大量の検索結果が表示されるので、Web ページに付属のコンソール ウィンドウを使用して、送信した Request リクエストを分析してみましょう。

F12 キーを押したままにするか、Web ページ上の空白スペースを右クリックして「検査」を選択すると、コンソールに多くのオプションがあることがわかります。たとえば、上部の列にメニュー バーがあります。一般的に、ジュニア クローラーで最も一般的に使用される要素は、Elements と Network (ネットワーク) です。その他の要素は、当面は使用しません。より高度なクローラーを学習するときに使用します。たとえば、JS をリバースするときにアプリケーション ウィンドウを使用することもできます。 . 詳細については後ほど説明します。

Elements には、すべてのリクエスト結果のすべての要素が含まれています。たとえば、すべての画像のソース コードが利用可能です。特に、左上隅にある小さな矢印をクリックすると、移動したすべての場所が Elements ウィンドウに表示されます。ソースの場合コード。

ここに画像の説明を挿入します

[ネットワーク] は、リクエストを含むクローラーによって一般的に使用されるネットワーク情報です。見てみましょう。[ネットワーク] ウィンドウで、[キャッシュを無効にする] にチェックを入れ、[すべて] をクリックします。

ここに画像の説明を挿入します

Web ページを更新して効果を確認してください。132 件のリクエスト リクエストを発行したことがわかります。これについては気にしないでください。Baidu に「Python」のリクエストを送信しただけですが、それらの一部は Web に添付されたリクエストですページ。

ここに画像の説明を挿入します

png、jpegなどたくさんの種類がありますが、一番上にスライドすると、Typeの欄にWebドキュメントというドキュメントの種類がありますので、それをクリックするとリクエストが表示されます。情報。

ここに画像の説明を挿入します

入力するドキュメントをクリックすると、新しいメニュー バーが表示されます。ヘッダー列の下に、リクエスト URL が表示されます。これは、前述したリクエスト URL です。この URL は、Web ページから実際にリクエストする URL です。 GET リクエストと見なされるリクエスト メソッドもあります。

ここに画像の説明を挿入します

もう一度下にスワイプすると、前に説明したリクエスト ヘッダーも表示されます。情報はたくさんありますが、前に説明したユーザー エージェント、ホスト、Cookie はすべてそこにあります。これらは、私たちがユーザーに与える情報です。サーバ。

ここに画像の説明を挿入します

リクエスト ヘッダーには多くの内容が含まれていますが、クローラ プログラムを作成するときにこの部分でも偽装作業を行う必要がありますが、すべての情報を記述する必要はなく、ユーザーなどの重要な情報を選択して書き込むだけで済みます。 Agent. 必ず持参する必要があり、Referer と Host はオプション領域であり、Cookie はログインするときに持参され、カモフラージュによく使用されるアイテムは 4 つだけです。

リクエストボディについては、ここではリクエストメソッドがGETリクエストであり、リクエストボディはPOSTリクエストでしか閲覧できないため、今回はチェックしません。昇降補助具。


4. 応答を理解する

レスポンスは主に3つのコンテンツで構成されていますので、1つずつ見ていきましょう。

1.対応状況

リクエストを送信すると、Web サイトからレスポンスが返されます。レスポンスには、レスポンス ステータス コードのレスポンス ステータスが含まれます。レスポンス ステータス コードは、次のカテゴリに大別できます。

①200 の範囲。たとえば、応答ステータス コード 200 は成功を示します。

②301などの300の範囲はジャンプを意味します。

③404 Page Not Foundなどの400の範囲。

④502のような500の範囲 Webページが見つかりません。

クローラの場合、200 ~ 300 は最も知りたい応答ステータスです。データを取得できます。400 ~ 500 は基本的に役に立たず、データを取得できません。< a i=1>

たとえば、ドキュメント ファイル内の [ヘッダー] ウィンドウの [全般] で、前の Request リクエストを送信したところ、応答ステータス コードが 200 であることがわかり、Web ページがリクエストに正常に応答したことがわかります。

ここに画像の説明を挿入します


2. レスポンスヘッダー

サーバーが提供する情報には、コンテンツ タイプ、コンテンツの長さ、サーバー情報、Cookie 設定などを含む応答ヘッダーも含まれます。

実際、応答ヘッダーは私たちにとってそれほど重要ではありません。ここで学習してください。


3. レスポンスボディ

これは非常に重要で、上記の最初のポイントの応答ステータスとは別に、Web ページの HTML や画像のバイナリ番号など、要求されたリソースのコンテンツが含まれているため、これがすべてです。

応答本体はどこにありますか?これは文書ファイルの「回答」列にもあります。下にスライドすると、多数の回答データがあることがわかります。これは私たちが取得したデータです。一部は直接ダウンロードできますが、その他は技術的な分析が必要です。それを得る。

ここに画像の説明を挿入します


データ収集

上記の Python 学習教材一式の完全版は CSDN 公式にアップロードされていますので、必要な場合は、WeChat で以下の CSDN 公式認定 QR コードをスキャンしてください。

おすすめ

転載: blog.csdn.net/Innocence_0/article/details/134810396