본문 바로가기
python

Python Requests 라이브러리 완벽 정리: 기능과 사용법 소개

by 니나노뭉 2024. 8. 21.

requests는 Python에서 HTTP 요청을 쉽게 보낼 수 있게 해주는 매우 인기 있는 라이브러리입니다. 이 라이브러리를 사용하면 복잡한 HTTP 요청을 간단하게 구현할 수 있으며, 다양한 HTTP 메서드(GET, POST, PUT, DELETE 등)를 지원합니다.

requests 설치

requests는 Python 표준 라이브러리가 아니기 때문에, 먼저 설치해야 합니다. 다음 명령어를 사용해 설치할 수 있습니다.

pip install requests

 

주요 기능 및 사용법

1. GET 요청

GET 요청은 서버로부터 데이터를 가져오는 데 사용됩니다. requests.get()을 사용하여 간단하게 GET 요청을 보낼 수 있습니다.

import requests

response = requests.get('https://jsonplaceholder.typicode.com/posts/1')
print(response.status_code)  # 상태 코드 출력 (ex: 200)
print(response.text)  # 응답 본문 출력

 

2. POST 요청

POST 요청은 서버에 데이터를 제출할 때 사용됩니다. requests.post()를 사용하면 폼 데이터나 JSON 데이터를 서버로 보낼 수 있습니다.

url = 'https://jsonplaceholder.typicode.com/posts'
data = {
    'title': 'foo',
    'body': 'bar',
    'userId': 1
}

response = requests.post(url, json=data)
print(response.status_code)  # 상태 코드 출력 (ex: 201)
print(response.json())  # 응답 JSON 출력

 

3. 요청 헤더 설정

요청을 보낼 때 추가적인 헤더를 설정할 수 있습니다. 헤더는 headers 인자를 사용해 딕셔너리 형태로 전달합니다.

headers = {
    'User-Agent': 'my-app/0.0.1',
    'Authorization': 'Bearer your_token_here'
}

response = requests.get('https://api.example.com/data', headers=headers)
print(response.status_code)

 

4. 쿼리 파라미터

GET 요청에 쿼리 파라미터를 추가하려면 params 인자를 사용하면 됩니다.

params = {
    'search': 'python',
    'page': 2
}

response = requests.get('https://example.com/search', params=params)
print(response.url)  # 요청된 URL 확인

 

5. 파일 업로드

파일을 서버로 업로드할 때는 files 인자를 사용합니다.

url = 'https://example.com/upload'
files = {'file': open('report.txt', 'rb')}

response = requests.post(url, files=files)
print(response.status_code)

 

6. 타임아웃 설정

요청에 타임아웃을 설정할 수 있습니다. 타임아웃은 서버가 응답하지 않으면 일정 시간 후에 요청을 중단하게 합니다.

response = requests.get('https://example.com', timeout=5)

 

7. 예외 처리

requests 라이브러리에서 발생할 수 있는 예외를 처리하는 것이 중요합니다. 대표적인 예외로 requests.exceptions.Timeout, requests.exceptions.RequestException 등이 있습니다.

try:
    response = requests.get('https://example.com', timeout=5)
    response.raise_for_status()  # 상태 코드가 4xx, 5xx이면 예외 발생
except requests.exceptions.Timeout:
    print("요청 시간이 초과되었습니다.")
except requests.exceptions.RequestException as e:
    print(f"요청 중 오류가 발생했습니다: {e}")

 

주요 HTTP 메서드

  • requests.get(): 리소스 요청
  • requests.post(): 리소스 생성 및 데이터 전송
  • requests.put(): 기존 리소스 업데이트
  • requests.delete(): 리소스 삭제
  • requests.head(): 헤더 정보만 요청
  • requests.options(): 서버에서 지원하는 메서드 요청

Session 객체

requests.Session() 객체를 사용하면 여러 요청에서 설정을 공유할 수 있습니다. 이를 통해 쿠키나 인증 정보를 공유하는 것이 가능합니다.

session = requests.Session()
session.headers.update({'Authorization': 'Bearer your_token_here'})

response = session.get('https://example.com/data')

 

결론

requests는 Python에서 HTTP 요청을 매우 간단하게 할 수 있도록 도와주는 라이브러리입니다. 다양한 HTTP 메서드를 지원하며, 파일 업로드, 타임아웃 설정, 예외 처리 등 다양한 기능을 제공합니다. 따라서 웹 스크래핑, API 요청, 서버와의 통신 등 여러 상황에서 유용하게 사용할 수 있습니다.