11

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

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

これは私に多くの疑問を投げかけますが、最初に解決する必要がある2つの主な質問は次のとおりです。

  • 最初から少し「不自然」に感じます。この種のことは受け入れられますか?
  • 人々を動揺させないために、クローラーが考慮すべき具体的な考慮事項は何ですか?
4

9 に答える 9

9

robots.txt に従います (前述のように攻撃的になりすぎないようにします)。

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

于 2008-08-28T14:24:01.757 に答える
3

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

考えるべきもう1つのこと-スパイダーページの場合、物事が存在しないかエラーがあるかを急いで判断しないでください。一部のページは、メンテナンス作業または短期間で修正されるエラーのためにオフラインになっています。

于 2008-09-04T10:29:58.737 に答える
3

ユーザー エージェント文字列には、ロボットがクロールするユーザー/対象物/理由を説明する URL を必ず含めてください。

于 2008-08-28T15:48:06.687 に答える
3

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

いくつかの便利なリンク:

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

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

ウィキペディア

于 2008-08-28T14:55:07.127 に答える
3

すべての良い点、ここで作ったもの。また、動的に生成された Java と JavaScript のリンク、パラメーターとセッション ID、一重引用符と二重引用符のエスケープ、相対リンクでの試行の失敗 (ルート ディレクトリを通過するために ../../ を使用)、大文字と小文字の区別、フレーム、リダイレクト、Cookie....

私は何日も続けることができました。このほとんどをカバーするロボット チェックリストがあります。できる限りお答えします。

また、オープンソースのロボット クローラー コードを使用することも検討する必要があります。これは、これらすべての問題に対して大きな優位性をもたらすからです。それに関するページもあります: open source robot code . それが役立つことを願っています!

于 2008-09-19T20:34:22.670 に答える
2

それは完全に受け入れ可能です-セッションごとに1回だけ各ページにアクセスするようにしてください。技術的に検索ボットを作成しているので、robots.txtとno-cacheルールに従う必要があります。IPをブロックすることで、必要に応じてボットをブロックできます。

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

于 2008-08-28T14:43:28.747 に答える
2

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

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

于 2008-08-28T14:45:16.917 に答える
2

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

言い換えれば、クローラーが攻撃的すぎないことを確認してください。

于 2008-08-28T14:21:56.863 に答える
2

スパイダーがスパムサイトで行き詰まらないように、サイト/ドメインまたはその他のもの (IP 範囲、ASN など) をブラックリストに登録する機能を追加する必要があります。

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

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

于 2008-09-19T20:38:12.100 に答える