본문 바로가기
Python/크롤링, 스크래핑 (Selenium 등등)

[Python] requests 예외처리 방법과 각 예외별 설명 ConnectionError, Timeout, TooManyRedirects, HTTPError, RequestException, Exception

by dong_su 2024. 5. 27.

requests 라이브러리를 사용할 때 발생할 수 있는 여러 가지 예외들을 처리하는 방법

 

ConnectionError:

  • 서버에 연결할 수 없거나 DNS 조회에 실패하는 경우 발생합니다.
import requests

try:
    response = requests.get(url)
except requests.exceptions.ConnectionError as e:
    print("서버에 연결할 수 없습니다:", e)

 

Timeout:

  • 요청 시간 초과가 발생한 경우 발생합니다.
import requests

try:
    response = requests.get(url, timeout=5)
except requests.exceptions.Timeout as e:
    print("요청 시간 초과입니다:", e)

 

TooManyRedirects:

  • 리디렉션 횟수가 너무 많은 경우 발생합니다.
import requests

try:
    response = requests.get(url, allow_redirects=False)
except requests.exceptions.TooManyRedirects as e:
    print("리디렉션 횟수가 너무 많습니다:", e)

 

HTTPError:

  • HTTP 응답 코드가 400 이상인 경우 발생합니다.
import requests

try:
    response = requests.get(url)
    response.raise_for_status()
except requests.exceptions.HTTPError as e:
    print("HTTP 에러가 발생했습니다:", e)

 

RequestException:

  • Requests 모듈에서 발생하는 모든 예외의 기본 클래스입니다.
import requests

try:
    response = requests.get(url)
except requests.exceptions.RequestException as e:
    print("Requests 예외가 발생했습니다:", e)

 

최상위 에러: Exception

  • 모든 예외의 부모 클래스로, 모든 예외를 처리합니다.
import requests

try:
    response = requests.get(url)
except Exception as e:
    print("에러가 발생했습니다:", e)

 

각 예외에 대한 예시는 위에서 제시한 코드들이 이미 해당 예외를 처리하고 있습니다.