Web クローラーを作成する際の主な考慮事項は何ですか?

StackOverflow https://stackoverflow.com/questions/32366

  •  09-06-2019
  •  | 
  •  

質問

私は今日 Web クローラーの作成/カスタマイズを考え始めたばかりですが、Web クローラー/ロボットのエチケットについてはほとんど知りません。私が見つけたエチケットに関する文書の大部分は古くてぎこちないように思えるので、Web 開発者コミュニティから最新の (そして実用的な) 洞察をいくつか得たいと思っています。

「サイト XYZ のマークアップは条件 ABC を満たしていますか?」という非常に単純な目的で、クローラーを使用して「Web」上を歩き回りたいと考えています。

これには多くの疑問が生じますが、最初に解決する必要がある主な疑問は次の 2 つだと思います。

  • 最初から少し「あやふや」な気がしますが、このようなことは許容できるのでしょうか?
  • 人々を動揺させないために、クローラーは具体的にどのような配慮をすべきでしょうか?
役に立ちましたか?

解決

robots.txt に従います (すでに述べたようにあまり攻撃的ではありません)。

ユーザー エージェント文字列について考えてみるとよいでしょう。ユーザー エージェント文字列は、自分が何をしているのか、どのように連絡を取ることができるのかを率直に伝えるのに適しています。

他のヒント

WillDean と Einar の優れた回答に加えて、HTTP 応答コードの意味と、パフォーマンスに大きな違いをもたらすため、HTTP 応答コードに遭遇したときにクローラーが何をすべきかについて、時間をかけて読むことを強くお勧めします。かどうかに関係なく、一部のサイトからアクセスを禁止されます。

いくつかの役立つリンク:

HTTP/1.1:ステータスコードの定義

アグリゲータークライアントのHTTPテスト

ウィキペディア

ユーザー エージェント文字列には、ロボットが誰、何を、なぜクロールしているのかを説明する URL を必ず含めてください。

ここで得られたすべての良い点。また、動的に生成される Java および JavaScript リンク、パラメータとセッション ID、一重引用符と二重引用符のエスケープ、相対リンクでの失敗 (ルート ディレクトリを越えるには ../../ を使用)、大文字と小文字の区別、などにも対処する必要があります。フレーム、リダイレクト、Cookie....

何日も続けられるし、実際そうしてきた。私は持っています ロボットのチェックリスト これで大部分がカバーされますので、できる限りのことは喜んでお答えします。

また、オープンソースのロボット クローラー コードの使用も検討する必要があります。そうすることで、これらすべての問題を大幅に解決できるからです。それに関するページもあります。 オープンソースのロボットコード. 。お役に立てば幸いです!

また、ボットのメタ タグに従うことを忘れないでください。 http://www.w3.org/TR/html4/appendix/notes.html#h-B.4.1.2

もう 1 つ考慮すべき点は、スパイダー ページを作成するときに、急いで何かが存在しない、またはエラーがあると判断しないことです。メンテナンス作業や短期間での修正のため、一部のページがオフラインになっております。

どれだけの負荷を与えているかを考慮することが非常に重要だと思います。たとえば、クローラが 1 つのサイトのすべてのオブジェクトを一度に多かれ少なかれリクエストすると、その特定のサイトで負荷の問題が発生する可能性があります。

言い換えれば、クローラーがあまりにも攻撃的でないことを確認してください。

これはまったく問題なく実行できますが、セッションごとに各ページに 1 回だけアクセスするようにしてください。技術的に検索ボットを作成しているときは、robots.txt と no-cache ルール。必要に応じて、IP をブロックすることでボットを具体的にブロックすることができます。

私が知る限り、あなたはソースコードだけを探しているので、従うべきものを構築したいと思うでしょう <link>スタイルシートの場合は s、 <script src="..."></script> JavaScript の場合。

負荷は大きな考慮事項です。特定のサイトをクロールする頻度と、目標を達成するために必要な最も基本的な情報に制限を設けます。テキストを探している場合は、すべての画像などをダウンロードしないでください。

もちろん robots.txt に従いますが、ユーザー エージェント文字列に正確な連絡先情報が含まれていることを確認し、場合によっては、何をしているのか、どのように実行しているのかを説明する Web ページへのリンクも含めてください。Web 管理者があなたからの多くのリクエストを見て興味を持っている場合は、有益な Web ページを使用して多くの質問に答えることができるかもしれません。

スパイダーがスパム サイトにはまり込むのを避けるために、サイト/ドメイン、またはその他のもの (IP 範囲、ASN など) をブラックリストに登録する機能を追加する必要があります。

タイムアウトと動作を詳細に制御できる HTTP 実装が必要になります。多くのサイトが無効な応答、巨大な応答、ゴミヘッダーを送り返したり、応答せずに接続を無期限に開いたままにしたりすることが予想されます。

また、ステータス 200 が「ページが存在する」ことを意味すると信じないでください。私の経験では、かなりの割合のサイトが「見つかりません」またはその他のエラーで 200 を返します (大規模な HTML ドキュメントも同様)。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top