画像スクレイピングの間隔に関して
画像スクレイピングの間隔に関して意見をお聞きしたいです。
ウェブサイトからimgタグの画像をスクレイピングしてダウンロードしたいとなった時に、スクレイピングの言語にpython, go, js, node 等どれを使用したとしても大体以下のような流れになると思います。
スクレイピングの流れ
res = request('ウェブページのURL(hoge.html)') srcs = resをパースして全てのsrc抽出 for src in srcs{ byte = request(src(hoge.png)) save(byte) 画像をバイナリ等でダウンロードし保存 sleep(1[sec]) ←これは必要か? }
上記のようなコードをよく見かけるのですが、正直サーバーの負荷を考えた上でも、for
文の中のsleep
がなくてもいいのではないかと思ってしまいます。
相手のサーバーに負荷をかけないようにリクエストの間隔をあけるのはもちろん理解できます。しかし、それはウェブページのURL(hoge.html)にリクエストを送るときに考えるべきことであって、画像のURL(hoge.png)にリクエストを送るときはそこまで考えなくてもいいのでは?と思ってしまいます。(もちろん1秒間に数百リクエストとかは完全アウトだと思いますが)
実際、対象のウェブページ(hoge.html)にChrome等ブラウザを使用して、アクセスした場合ほぼ同時に複数の画像のURL(hoge.png)にリクエストを送ってブラウザに画像が表示されて見えるようになっていると考えると、スクレイピングでも画像URLにリクエストを送る際、1秒間に複数リクエストを送っても不自然ではないように感じます。
「スクレイピングの際には1秒以上リクエスト間隔をあけよう」といった記事をよく見かけるのですが、画像スクレイピングの際にはせいぜい0.1秒もしくは0秒くらい空ければいいのではと考えてしまいます。
この考え方は合っているのでしょうか?
周りに聞ける人もあまりいないので他の方の意見を聞ければと思い質問させていただきました。
あなたの回答
tips
プレビュー