반응형
소개
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 헤더를 수정하는 방법으로 이러한 오류를 효과적으로 해결할 수 있습니다. 웹 스크래핑을 할 때는 항상 규정을 준수하며, 서버에 과도한 부하를 주지 않도록 주의해 주세요!
반응형
'Python > Selenium' 카테고리의 다른 글
selenium.webdriver.screenshot으로 화면 캡처하기 (0) | 2025.01.26 |
---|---|
selenium.webdriver.refresh로 페이지 새로고침하기 (0) | 2025.01.26 |
selenium NoSuchDocumentException 오류 해결하기 (0) | 2025.01.25 |
selenium NoRubyException 오류 해결하기 (0) | 2025.01.25 |
selenium.webdriver.quit으로 브라우저 종료하기 (0) | 2025.01.25 |