Pythonでウェブスクレイピングを行う際、time.sleep
関数を適切に使用することは重要です。この関数は、スクリプトの実行を一時停止し、指定した時間だけ待機することで、ウェブサイトへのリクエストを制御します。
time.sleep
の適切な使用場所
基本的に、ウェブサイトに対してリクエストを送る際にtime.sleep
を使用します。例えば、一覧ページから詳細ページのURLを取得する際などにも使用することがあります。
def scrape_list(self, list_url, mode):
r = requests.get(list_url)
if r.status_code != requests.codes.ok:
return False
soup = BeautifulSoup(r.content, 'html.parser')
soup_a_list = soup.find_all('a', class_='list-rst__rst-name-target')
if len(soup_a_list) == 0:
return False
for soup_a in soup_a_list:
item_url = soup_a.get('href')
self.store_id_num += 1
self.scrape_item(item_url, mode)
time.sleep(2)
return True
上記のコードでは、一覧ページから各詳細ページのURLを取得し、そのURLを使って詳細情報をスクレイピングしています。各詳細ページへのリクエストの間にtime.sleep(2)
を挿入することで、リクエストの頻度を制御しています。
注意点
time.sleep
は、リクエストを送る際に適切な時間を空ける目的で使用します。しかし、BeautifulSoup
でHTMLをパースする際など、ウェブサイトに新たなリクエストを送らない処理では、time.sleep
を使用する必要はありません。
以上、Pythonでスクレイピングを行う際の時間管理について解説しました。適切な時間管理を行うことで、効率的なスクレイピングを行うことができます。