
私の理解では、Web ブラウザがページを表示するリクエストを行うと、サーバーは HTML で応答します。次に、Web ブラウザはその HTML コードをレンダリングし、HTML で確認した各埋め込みオブジェクト (画像など) のリクエストを 1 秒未満 (多少の誤差あり) でサーバーに送信します。ただし、Web Scrapper を使用すると、サーバーにリクエストを送信して HTML のみを取得し、HTML をまったくレンダリングしません。
Web スクレイピングの適切なエチケットでは、サーバーに過負荷をかけないように、リクエストを 1 秒あたり最大 1 回に制限する必要があります。
では、Web ブラウザが埋め込みオブジェクトごとにリクエストを送信する場合 (1 秒以内に複数のリクエスト) は問題にならないのに、Web スクラッパーが異なるページの HTML ソースに対して 1 秒あたり複数のリクエストを送信すると問題になるのはなぜでしょうか。
答え1
Web スクレイパー (スクレイパーではない) が遅延を使用する理由は次のとおりです。
- ウェブをスクレイピングしていることを隠し、スクレイピングしようとしているサイトから締め出されないようにするため(ページ間のわずかな遅延を使用することで、ネットサーフィンをしている人間が操作するウェブブラウザのように見える)
- ウェブサイトの所有者に対する礼儀として(非常に短い時間内に大量のデータを要求すると、サーバーに過負荷がかかり、サイトの他のユーザーに対してサイトが応答していないように見える可能性があります)
ブラウザ (または Web スクレイパー) がページをリクエストする際、同じページ上のオブジェクトをリクエストする間に 1 秒待つ必要はありません。すぐにリクエストできるため、ユーザー エクスペリエンスが向上します (ページの読み込みが速くなります)。
「通常の」ユーザーが行わないことは、非常に短い時間内に異なるページを要求することです。ユーザーはページを見て、リンクをクリックして次のページに進むなどします。
したがって、ユーザーがサイトを閲覧しているとき、同じ Web サイトから異なるページを要求する間に遅延が発生します。これは、質問で言及されている 1 秒の遅延である可能性が非常に高いです。
当然のことながら、サイトを素早くスクレイピングするために、Web スクレイパーは可能な限り短い遅延を使用しようとします。プロセスを高速化するためにさまざまな方法を使用します (たとえば、複数のサイトを並行してスクレイピングする、リクエストが複数の異なるユーザーからのものであるように見せるなど)。Web
スクレイパーの場合、遅延が発生する理由と作業を完了する必要性の間には常にトレードオフがあります。
詳細については、ウィキペディア