Python에서 HTTP 요청을 보내는 가장 간단하고 효율적인 방법 중 하나는 requests
모듈을 사용하는 것입니다. 이 모듈을 사용하면 웹 페이지, API 등과의 통신을 쉽게 처리할 수 있습니다. 이 글에서는 requests
모듈을 설치하고 사용하는 방법부터 다양한 기능까지 알아보겠습니다.
영상으로 보실분들
Requests 관련 글
Requests User Agent 헤더 변경하는 방법
Requests 요청에 Proxy 서버 붙이는 방법
1. requests 모듈 설치하기
requests 모듈은 기본적으로 Python에 포함되어 있지 않기 때문에 먼저 설치해야 합니다.
pip install requests
2. GET 요청 보내기
가장 기본적인 HTTP 메서드 중 하나인 GET 요청은 서버로부터 정보를 가져올 때 사용됩니다. 예를 들어, 웹 페이지의 HTML 콘텐츠를 가져오거나, API 엔드포인트에서 데이터를 가져올 때 사용됩니다.
import requests
response = requests.get('https://jsonplaceholder.typicode.com/posts')
print(response.text) # 응답 내용을 출력합니다.
response.text
는 서버로부터 받은 응답을 텍스트로 반환하며, response.status_code
는 HTTP 상태 코드를 반환합니다.
3. POST 요청 보내기
POST 요청은 주로 서버에 데이터를 전송할 때 사용됩니다. 예를 들어, 사용자가 폼에 입력한 데이터를 서버로 전송하거나, API에 새로운 리소스를 생성할 때 사용됩니다.
url = 'https://jsonplaceholder.typicode.com/posts'
data = {
'title': 'foo',
'body': 'bar',
'userId': 1
}
response = requests.post(url, json=data)
print(response.json()) # 응답 내용을 JSON으로 출력합니다.
여기서 json=data
는 requests
모듈이 JSON 형식으로 데이터를 전송하도록 해줍니다.
4. 요청 헤더 설정하기
특정 헤더를 추가하여 요청을 보내야 할 때가 있습니다. 예를 들어, API 키를 포함하거나 특정 데이터 형식을 요청할 때가 있습니다.
headers = {
'Authorization': 'Bearer your_api_key_here',
'Content-Type': 'application/json'
}
response = requests.get('https://jsonplaceholder.typicode.com/posts', headers=headers)
print(response.status_code)
헤더는 딕셔너리 형식으로 전달하며, Content-Type
과 같은 헤더를 이용해 요청의 형식을 지정할 수 있습니다.
5. URL 파라미터 추가하기
GET 요청 시 특정 파라미터를 URL에 추가하여 쿼리를 보낼 수 있습니다.
params = {'userId': 1}
response = requests.get('https://jsonplaceholder.typicode.com/posts', params=params)
print(response.json())
위의 코드에서는 userId=1
이라는 파라미터를 URL에 추가하여 서버로 요청을 보냅니다.
6. 응답 데이터 처리하기
requests
모듈을 통해 받은 응답은 다양한 방식으로 처리할 수 있습니다.
response.text
- 텍스트 형식으로 응답을 반환합니다.response.json()
- JSON 형식의 응답을 Python 딕셔너리로 변환해 반환합니다.response.content
- 바이너리 형식으로 응답을 반환합니다.
response = requests.get('https://jsonplaceholder.typicode.com/posts/1')
print(response.json()) # JSON 응답을 딕셔너리로 변환하여 출력
7. 파일 다운로드하기
파일을 다운로드할 때도 requests
모듈을 사용할 수 있습니다.
url = 'https://example.com/somefile.zip'
response = requests.get(url, stream=True)
with open('somefile.zip', 'wb') as file:
for chunk in response.iter_content(chunk_size=8192):
file.write(chunk)
여기서 stream=True
옵션을 통해 응답을 스트리밍 방식으로 받아와서 파일에 쓰기 작업을 합니다.
8. 예외 처리하기
네트워크 요청은 항상 성공하는 것이 아니기 때문에 예외 처리가 중요합니다. requests
모듈에서 발생하는 일반적인 예외를 처리하는 방법을 알아보겠습니다.
try:
response = requests.get('https://jsonplaceholder.typicode.com/posts/1')
response.raise_for_status() # 상태 코드가 200이 아닌 경우 예외를 발생시킵니다.
except requests.exceptions.HTTPError as errh:
print("HTTP 에러:", errh)
except requests.exceptions.ConnectionError as errc:
print("연결 에러:", errc)
except requests.exceptions.Timeout as errt:
print("타임아웃 에러:", errt)
except requests.exceptions.RequestException as err:
print("요청 에러:", err)
raise_for_status()
메서드는 상태 코드가 200이 아닌 경우 예외를 발생시켜 오류를 쉽게 처리할 수 있게 해줍니다.
9. 세션(Session) 사용하기
세션을 사용하면 여러 번의 요청에 대해 쿠키나 헤더 정보를 유지할 수 있습니다. 예를 들어, 로그인 세션을 유지해야 할 때 유용합니다.
session = requests.Session()
session.headers.update({'Authorization': 'Bearer your_api_key_here'})
response = session.get('https://jsonplaceholder.typicode.com/posts')
print(response.json())
마무리
Python의 requests
모듈은 간편하고 강력한 HTTP 요청 도구로, 다양한 기능을 제공하여 복잡한 네트워크 요청도 쉽게 처리할 수 있습니다. 이 가이드를 통해 requests
모듈을 활용한 웹 통신을 더욱 이해하고 효율적으로 사용할 수 있기를 바랍니다.
'Python Requests 기초 강의' 카테고리의 다른 글
셀레니움(Selenium) 쿠키를 활용해 requests 쿠키값으로 사용하는 방법 (0) | 2025.01.06 |
---|---|
Python Requests Session 사용법, 속도와 효율 모두 잡기 (0) | 2025.01.04 |
Python requests 기초 강의 proxy server 사용하는 방법 [2강/2025년] (0) | 2024.12.31 |
파이썬 requests 기초 강의 proxy, user-agent 바꾸는 법 [1강/2025년 버전] (0) | 2024.12.30 |
Python requests 기초 강의 proxy, user-agent 바꾸는 법 [1강/소스코드 원문] (1) | 2024.12.30 |