0

対応するサーバーから Web ページを取得するように要求するマルチスレッド Web クローラーを作成しました。マルチスレッドであるため、サーバーに負担をかける可能性があります。どのサーバーがクローラーをブロックできるか(礼儀正しさ)が原因です。

同じサーバーへの連続したリクエスト間の遅延を最小限に抑える機能を追加したいだけです。各サーバー (ドメイン) からの robot.txt からの最小遅延を HashMap に保存し、それをその特定のサーバーに対して行われたリクエストの最後のタイミングと比較しても問題ないでしょうか?

robot.txt で遅延が指定されていない場合はどうなりますか?

4

2 に答える 2

1

Web クローラーの遅延として 0.5 秒を使用しています。それをデフォルトとして使用し、指定されている場合はそれを使用する必要があります。

于 2012-10-15T09:20:06.693 に答える
1

事実上の標準の robots.txt ファイル形式では、リクエスト間の遅延が指定されていません。非標準の拡張子です。

「Crawl-delay」ディレクティブがないからといって、好きなだけサーバーを自由に叩いてもよいというわけではありません。


各サーバー (ドメイン) からの robot.txt からの最小遅延を HashMap に格納し、それをその特定のサーバーに対して行われたリクエストの最後のタイミングと比較しても問題ないでしょうか?

それでは不十分です。また、robots.txt で非標準ディレクティブが使用されていない場合に備えて、リクエスト間の最小時間を実装する必要があります。また、503 応答の「Retry-After」ヘッダーも尊重する必要があります。

理想的には、リクエストへの応答にかかる時間にも注意を払う必要があります。遅い応答は、混雑またはサーバーの過負荷を示している可能性があり、混雑の原因であると認識された場合、サイト管理者はクローラーをブロックする可能性が高くなります.

于 2012-10-10T10:57:57.577 に答える