[파이썬] requests 응답 객체 다루기

Requests는 파이썬에서 HTTP 요청을 보내기 위한 매우 강력하고 인기 있는 라이브러리입니다. 이 블로그 포스트에서는 Requests를 사용하여 웹 요청을 보내고 응답 객체를 다루는 방법에 대해 알아보겠습니다.

Requests 라이브러리 설치

Requests 라이브러리를 사용하려면 우선 설치해야 합니다. 아래의 명령을 사용하여 설치할 수 있습니다:

pip install requests

GET 요청 보내기

GET 요청을 보내는 가장 간단한 방법은 Requests의 get 함수를 사용하는 것입니다. 아래는 간단한 GET 요청의 예시입니다:

import requests

response = requests.get('https://www.example.com')
print(response.status_code)  # 응답 상태 코드 출력
print(response.text)    # 응답 내용 출력

위의 코드에서 get 함수는 주어진 URL에 GET 요청을 보내고, 반환된 응답 객체를 response 변수에 저장합니다. 그리고 status_code 속성을 사용하여 응답의 상태 코드를 출력하고, text 속성을 사용하여 응답 내용을 출력합니다.

응답 객체 속성

응답 객체에는 다양한 속성이 포함되어 있습니다. 아래는 일부 주요 속성들입니다:

POST 요청 보내기

POST 요청을 보내는 방법도 간단합니다. post 함수를 사용하면 됩니다. 아래는 POST 요청의 예시입니다:

import requests

data = {'name': 'John', 'age': 30}
response = requests.post('https://www.example.com', data=data)
print(response.status_code)
print(response.text)

위의 코드에서 data 변수에는 POST 요청으로 전송할 데이터가 딕셔너리 형식으로 포함되어 있습니다. post 함수의 data 매개변수에 이 데이터를 전달하여 요청을 보냅니다.

사용자 정의 헤더 추가하기

Requests를 사용하면 사용자 정의 헤더를 요청에 추가할 수도 있습니다. 아래는 사용자 정의 헤더를 추가하는 예시입니다:

import requests

headers = {'User-Agent': 'Mozilla/5.0'}
response = requests.get('https://www.example.com', headers=headers)
print(response.text)

위의 코드에서 headers 변수에 사용자 정의 헤더를 딕셔너리 형태로 정의하고, get 함수의 headers 매개변수에 전달하여 요청을 보냅니다.

오류 처리하기

Requests를 사용하여 웹 요청을 보낼 때는 항상 예외 처리를 해야 합니다. 네트워크 문제로 인해 요청이 실패할 수 있기 때문입니다. 아래는 예외 처리를 추가한 예시입니다:

import requests

try:
    response = requests.get('https://www.example.com')
    response.raise_for_status()  # 응답이 성공적이지 않으면 예외 발생
    print(response.text)
except requests.exceptions.HTTPError as err:
    print(f"HTTP 오류가 발생했습니다: {err}")
except requests.exceptions.ConnectionError as err:
    print(f"네트워크 연결 오류가 발생했습니다: {err}")
except requests.exceptions.RequestException as err:
    print(f"오류가 발생했습니다: {err}")

위의 코드에서 raise_for_status() 함수를 사용하여 응답이 성공적이지 않은 경우 예외를 발생시킵니다. 이를 통해 오류 처리를 할 수 있습니다.

Requests를 사용하여 HTTP 요청을 보내고 응답 객체를 다루는 방법에 대해 알아보았습니다. 이제 여러분은 웹과 상호 작용하는 파이썬 애플리케이션을 개발할 수 있을 것입니다. Requests의 다양한 기능과 옵션에 대해 더 자세히 알아보고 싶다면 공식 도큐먼트를 참조하시기 바랍니다. Happy coding!