カテゴリ: Python 更新日: 2026/05/30

Pythonでスクレイピングのリクエスト間隔を調整する方法!初心者向け完全ガイド

Pythonでスクレイピングのリクエスト間隔を調整する方法
Pythonでスクレイピングのリクエスト間隔を調整する方法

先生と生徒の会話形式で理解しよう

生徒

「PythonでWebスクレイピングをしていたら、アクセスしすぎって怒られたみたいなんですが…」

先生

「それはリクエスト間隔を空けていない可能性がありますね。短時間で大量アクセスするとサーバーに負担がかかります。」

生徒

「リクエスト間隔ってどうやって調整するんですか?」

先生

「Pythonではとても簡単にできます。順番にやさしく解説していきますよ!」

1. リクエスト間隔とは?

1. リクエスト間隔とは?
1. リクエスト間隔とは?

リクエスト間隔とは、Webスクレイピングでサーバーにアクセスする間の時間のことです。例えば人がWebサイトを見るときは、一瞬で何十回もアクセスすることはありません。しかしプログラムは一瞬で何百回もアクセスしてしまいます。

この状態はサーバーに大きな負担をかけるため、アクセス制限やブロックの原因になります。そのため、一定の時間を空けてアクセスすることが重要です。

2. なぜリクエスト間隔を調整する必要があるのか

2. なぜリクエスト間隔を調整する必要があるのか
2. なぜリクエスト間隔を調整する必要があるのか

Webスクレイピングではマナーが非常に大切です。リクエスト間隔を調整しないと以下のような問題が発生します。

  • IPアドレスがブロックされる
  • アクセス禁止になる
  • サイト運営者に迷惑がかかる

これを防ぐために、適切な待ち時間を入れることが基本ルールです。

3. time.sleepで簡単に間隔をあける方法

3. time.sleepで簡単に間隔をあける方法
3. time.sleepで簡単に間隔をあける方法

Pythonでリクエスト間隔を調整する最も簡単な方法は、timeモジュールのsleep関数を使うことです。


import time
import requests

url = "https://example.com"

response = requests.get(url)
print(response.status_code)

time.sleep(3)  # 3秒待つ

このように書くことで、3秒間処理を止めることができます。sleepは「休む」という意味で、プログラムを一時停止させる役割があります。

4. ループ処理で間隔を入れる方法

4. ループ処理で間隔を入れる方法
4. ループ処理で間隔を入れる方法

複数のページをスクレイピングする場合は、ループの中でsleepを使います。


import time
import requests

urls = ["https://example.com/page1", "https://example.com/page2"]

for url in urls:
    response = requests.get(url)
    print(response.status_code)
    time.sleep(2)  # 各リクエストごとに2秒待つ

これにより、1回アクセスするごとに2秒待つので、安全にデータを取得できます。

5. ランダムな間隔で自然なアクセスにする

5. ランダムな間隔で自然なアクセスにする
5. ランダムな間隔で自然なアクセスにする

同じ間隔でアクセスすると機械的な動きになり、不自然になります。そのためランダムな時間を使う方法もあります。


import time
import random
import requests

url = "https://example.com"

response = requests.get(url)
print(response.status_code)

wait_time = random.uniform(1, 5)
time.sleep(wait_time)

random.uniformは「指定した範囲でランダムな数字を作る」機能です。これにより、人が操作しているような自然なアクセスになります。

6. スクレイピングのベストな間隔とは

6. スクレイピングのベストな間隔とは
6. スクレイピングのベストな間隔とは

理想的なリクエスト間隔はサイトによって異なりますが、一般的には1秒〜5秒程度が目安です。アクセス数が多い場合はさらに長くする必要があります。

またrobots.txtというファイルでアクセスルールが公開されている場合もあるため、事前に確認することも大切です。

7. エラー対策として間隔を調整する

7. エラー対策として間隔を調整する
7. エラー対策として間隔を調整する

アクセスが失敗した場合にも、すぐに再試行するとサーバーに負担がかかります。そのためリトライ時にも待機時間を入れます。


import time
import requests

url = "https://example.com"

for i in range(3):
    try:
        response = requests.get(url)
        print(response.status_code)
        break
    except:
        print("エラー発生、再試行します")
        time.sleep(5)

このようにすることで、安全に再試行ができます。

8. 初心者が気をつけるポイント

8. 初心者が気をつけるポイント
8. 初心者が気をつけるポイント

PythonのWebスクレイピングで重要なポイントをまとめます。

  • 短時間で大量アクセスしない
  • 必ずsleepで間隔を入れる
  • ランダム化して自然な動きにする
  • エラー時にも待機する

これらを守ることで、安全で安定したスクレイピングができます。

まとめ

まとめ
まとめ

リクエスト間隔の重要性を振り返る

今回は、PythonでのWebスクレイピングにおけるリクエスト間隔の調整方法について詳しく解説しました。スクレイピングはとても便利な技術ですが、正しく使わなければサーバーに負担をかけたり、アクセス制限やブロックの原因になったりします。そのため、リクエスト間隔を適切に調整することは、Pythonスクレイピングにおいて最も基本であり、かつ重要なポイントです。

特に初心者の方は、「とりあえずデータを取得できればよい」と考えてしまいがちですが、実務や本格的な開発では「安全性」「安定性」「マナー」が非常に重視されます。Pythonのtimeモジュールを使ったsleep関数を活用することで、簡単にリクエスト間隔をコントロールできるため、まずは基本をしっかり身につけることが大切です。

実務で役立つスクレイピング設計の考え方

実際の現場では、単純に一定時間待つだけでなく、より自然なアクセスを意識した設計が求められます。例えば、randomモジュールを使ってランダムな待機時間を設定することで、人間の操作に近い動きを再現することができます。また、大量のページを取得する場合には、ループ処理の中で適切にsleepを入れることで、サーバーへの負荷を分散させることが可能です。

さらに、エラーが発生した場合のリトライ処理にも注意が必要です。連続してリクエストを送るのではなく、一定時間待ってから再試行することで、安定したデータ取得が実現できます。このような工夫を取り入れることで、より実用的で信頼性の高いスクレイピングプログラムを作ることができます。

サンプルプログラム(総合例)


import time
import random
import requests

urls = [
    "https://example.com/page1",
    "https://example.com/page2",
    "https://example.com/page3"
]

for url in urls:
    for retry in range(3):
        try:
            response = requests.get(url)
            print("ステータス:", response.status_code)
            break
        except:
            print("エラー発生、再試行します")
            time.sleep(5)

    wait_time = random.uniform(1, 5)
    print(f"{wait_time}秒待機します")
    time.sleep(wait_time)

上記のサンプルコードでは、Pythonのrequestsライブラリを使ったHTTPリクエスト、time.sleepによる待機処理、random.uniformによるランダム化、そしてエラー時のリトライ処理を組み合わせています。このように複数の要素を組み合わせることで、安全かつ効率的なスクレイピングが実現できます。

初心者が押さえておくべきポイントの総整理

  • Pythonスクレイピングではリクエスト間隔の調整が必須である
  • time.sleepを使えば簡単に待機時間を設定できる
  • ループ処理と組み合わせて安定したアクセスを実現する
  • random.uniformで自然なアクセスパターンを作る
  • エラー時には必ず待機してからリトライする
  • サイトごとのルールを確認し、マナーを守る
先生と生徒の振り返り会話

生徒

「Pythonでスクレイピングをする時は、ただデータを取るだけじゃなくて、リクエスト間隔がすごく大事なんですね。」

先生

「その通りです。間隔を空けないとサーバーに負担がかかり、アクセス禁止になる可能性があります。」

生徒

「time.sleepを使えば簡単に調整できるのは分かりました。ループの中でも使えるのが便利ですね。」

先生

「はい。それに加えて、randomでランダムな待機時間を入れることで、より自然なアクセスになります。」

生徒

「エラーが出た時も、すぐ再試行するんじゃなくて待つのがポイントなんですね。」

先生

「その通りです。リトライ処理と待機時間を組み合わせることで、安定したスクレイピングができます。」

生徒

「これで安心してPythonのWebスクレイピングができそうです!」

先生

「良いですね。基本をしっかり守れば、安全で効率的なデータ取得ができますよ。」

コメント
コメント投稿は、ログインしてください

まだ口コミはありません。

関連記事:
Python のWebスクレイピングの記事一覧へ
新着記事
New1
PHP
PHPでファイルの存在確認・削除・移動を行う方法!初心者向けにfile_exists・unlink・renameを解説
New2
Python
Pythonでネットワークスキャナーを作る方法!Scapy入門ガイド(初心者向け)
New3
ChatGPT
ChatGPTでPythonのバグを見つける方法!初心者が確認すべきチェックポイント
New4
Python
PythonでICMP(Ping)を送信する方法を徹底解説!subprocessとscapyでネットワーク確認
人気記事
No.1
Java&Spring記事人気No1
PHP
PHPの配列をソートする方法!sort, rsort, asort, ksortの使い方を丁寧に解説します!
No.2
Java&Spring記事人気No2
ChatGPT
ChatGPTでPythonコード作成とは?初心者向けに使い方・メリット・注意点を徹底解説
No.3
Java&Spring記事人気No3
Python
PythonでAPIリクエストを送信する方法を完全解説!requestsライブラリで簡単API通信
No.4
Java&Spring記事人気No4
Python
Pythonのrequestsライブラリ完全入門!HTTPリクエストの送り方を初心者向けにやさしく解説
No.5
Java&Spring記事人気No5
Python
Pythonの非同期HTTPリクエスト(asyncio + aiohttp)完全ガイド!初心者でもわかるネットワークプログラミング
No.6
Java&Spring記事人気No6
Python
Pythonのtimedeltaで日付の加算・減算をしよう!初心者でもわかる時間操作の基本
No.7
Java&Spring記事人気No7
PHP
PHPの変数の命名規則とベストプラクティスをやさしく解説!初心者向け完全ガイド
No.8
Java&Spring記事人気No8
Python
Pythonでzip圧縮・解凍する方法を徹底解説!初心者でもわかるzipfileモジュールの使い方