スクレイピング 中級

90. 複数ページをまとめて取得する

複数のURLをforループで処理する

ここまでで学んだrequestsとBeautifulSoupを組み合わせれば、URLのリストをfor文でまわして、複数のページから同じように情報を取得できます。

time.sleep()で相手のサーバーに配慮する

プログラムは人間よりずっと高速にリクエストを送れてしまいます。何も考えずにループで連続取得すると、短時間に大量のアクセスが集中し、相手のサーバーに負荷をかけてしまいます。レッスン79で学んだマナーを、ここで実際のコードとして実践しましょう。time.sleep()を使って、1回のアクセスごとに数秒程度の間隔を空けるのが基本です。

サンプルコード

import requests
import time

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

for url in urls:
    response = requests.get(url)
    print(url, response.status_code)
    time.sleep(2)  # 次のアクセスまで2秒待つ
複数のページを順番に取得するループの中で、time.sleep(2)を呼び出すことで、1回アクセスするごとに2秒間の間隔を空けています。この一手間が、相手のサーバーへの配慮につながります。

📝 練習問題

練習問題:['https://example.com/1', 'https://example.com/2', 'https://example.com/3']というURLのリストを、1秒間隔を空けながらforループで順番にrequests.get()し、status_codeを表示してください。