본문 바로가기
Python/Selenium

selenium TooManyRequestsException 오류 해결하기

by PySun 2025. 1. 25.
반응형

소개

Selenium을 사용하다 보면 웹사이트에 너무 많은 요청을 보내서 'TooManyRequestsException' 오류에 직면할 수 있습니다. 이 오류는 일반적으로 특정 사이트에서 요청 제한을 초과했을 때 발생합니다. 이번 글에서는 이 오류의 원인과 유용한 해결 방법에 대해 다루어 보겠습니다.

에러 발생 예시 코드

먼저, 'TooManyRequestsException'이 발생할 수 있는 간단한 예시 코드를 살펴보겠습니다.

from selenium import webdriver
import time

# 웹드라이버 설정
driver = webdriver.Chrome()

# 웹 페이지에 반복적으로 요청을 보내기
for i in range(100):
    driver.get("https://example.com")
    time.sleep(0.1)  # 요청 간격이 너무 짧음

driver.quit()

에러 해결 방법

1. 요청 간격 늘리기

가장 간단한 방법은 요청 간격을 늘리는 것입니다. 너무 빠른 요청이 서버에 부담을 줄 수 있으므로, 적절한 딜레이를 추가하여 요청을 보내는 것이 좋습니다.

from selenium import webdriver
import time

# 웹드라이버 설정
driver = webdriver.Chrome()

# 웹 페이지에 반복적으로 요청을 보내기
for i in range(100):
    driver.get("https://example.com")
    time.sleep(5)  # 요청 간격을 5초로 늘림

driver.quit()

2. IP 변경 또는 VPN 사용

요청이 발생하는 IP가 차단된 경우, VPN을 통해 IP를 변경하는 방법도 있습니다. 이를 통해 웹사이트에서 차단된 IP를 우회할 수 있습니다.

from selenium import webdriver
import time

# VPN 연결 후 웹드라이버 설정
driver = webdriver.Chrome()

# 웹 사이트 접속
try:
    driver.get("https://example.com")
except Exception as e:
    print(f"에러 발생: {e}")

driver.quit()

3. 헤더 변경

HTTP 헤더를 변경함으로써 웹사이트가 봇을 감지하는 것을 우회할 수 있습니다. User-Agent 헤더를 수동으로 설정하여 일반 사용자가 접근하는 것처럼 보이도록 할 수 있습니다.

from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.chrome.options import Options

# 사용자 에이전트 설정
options = Options()
options.add_argument("user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36")

# 웹드라이버 설정
driver = webdriver.Chrome(service=Service('chromedriver_path'), options=options)

# 웹 페이지 접속
driver.get("https://example.com")
driver.quit()

마무리

이번 포스트에서는 Selenium을 사용할 때 나타나는 'TooManyRequestsException' 오류에 대한 발생 원인과 해결 방법을 다루었습니다. 요청의 간격을 조절하고, IP를 변경하며, HTTP 헤더를 수정하는 방법으로 이러한 오류를 효과적으로 해결할 수 있습니다. 웹 스크래핑을 할 때는 항상 규정을 준수하며, 서버에 과도한 부하를 주지 않도록 주의해 주세요!

반응형