728x90

Python의 requests 라이브러리는 복잡한 HTTP 통신을 극도로 단순화하여 API 호출, 웹 데이터 요청, 크롤링 등을 매우 쉽게 만들어 줍니다. 본 글에서는 실무 중심의 관점으로 requests의 다양한 기능과 실제 적용 방법을 상세히 소개합니다.
1. requests란?
- Python에서 HTTP 요청을 쉽게 처리할 수 있도록 만든 외부 라이브러리
- GET, POST, PUT, DELETE 등 다양한 메서드 지원
- 쿠키, 헤더, 인증 등 복잡한 네트워크 요청을 간결하게 구성
- JSON 자동 파싱 기능 내장
2. 설치 방법
pip install requests
3. 기본 사용법
import requests
response = requests.get("https://jsonplaceholder.typicode.com/posts/1")
print(response.status_code)
print(response.json())
4. 주요 요청 메서드 비교
| 메서드 | 설명 | 사용 예시 |
|---|---|---|
| GET | 데이터 조회 | requests.get(url) |
| POST | 데이터 전송 | requests.post(url, data=...) |
| PUT | 전체 리소스 수정 | requests.put(url, data=...) |
| DELETE | 리소스 삭제 | requests.delete(url) |
5. JSON 데이터 요청 및 파싱
res = requests.get("https://jsonplaceholder.typicode.com/users")
users = res.json()
for user in users:
print(user["name"], "-", user["email"])
6. 헤더와 파라미터 설정
headers = {"User-Agent": "Mozilla/5.0"}
params = {"search": "python"}
res = requests.get("https://example.com/search", headers=headers, params=params)
print(res.url)
7. POST 요청으로 데이터 전송
payload = {"username": "testuser", "password": "1234"}
res = requests.post("https://httpbin.org/post", data=payload)
print(res.text)
8. 파일 업로드 및 다운로드
# 파일 업로드
files = {"file": open("example.txt", "rb")}
res = requests.post("https://httpbin.org/post", files=files)
# 파일 다운로드
img = requests.get("https://httpbin.org/image/png")
with open("image.png", "wb") as f:
f.write(img.content)
9. 예외 처리 (중요)
try:
res = requests.get("https://example.com", timeout=5)
res.raise_for_status()
except requests.exceptions.HTTPError as e:
print("HTTP 오류:", e)
except requests.exceptions.RequestException as e:
print("요청 실패:", e)
10. 세션(Session) 객체 활용
로그인 유지, 쿠키 저장 등을 위한 세션 관리 예제
session = requests.Session()
session.post("https://example.com/login", data={"id": "me", "pw": "1234"})
res = session.get("https://example.com/mypage")
print(res.text)
11. 실전 예제: REST API 통신
API_KEY = "내_키"
headers = {"Authorization": f"Bearer {API_KEY}"}
res = requests.get("https://api.openai.com/v1/models", headers=headers)
print(res.json())
12. requests vs urllib vs httpx 비교
| 항목 | requests | urllib | httpx |
|---|---|---|---|
| 간결성 | ★★★★★ | ★★☆☆☆ | ★★★★☆ |
| 비동기 지원 | 불가 | 불가 | 가능 (async) |
| 사용 편의성 | 최고 | 복잡함 | 우수 |
| 실전 활용도 | 높음 | 낮음 | 중간 |
13. requests 사용 팁
- 모든 요청에는
timeout설정 습관화 - API Rate Limit을 고려한 sleep 또는 backoff 처리
- 응답의
status_code확인 필수 - 빈번한 요청은
Session객체로 통일
14. 결론: 가장 직관적인 HTTP 통신 도구
Python requests는 개발자, 데이터 사이언티스트, 자동화 엔지니어 모두에게 없어서는 안 될 도구입니다. 단 몇 줄의 코드로 복잡한 API 통신, 인증 처리, JSON 파싱 등을 수행할 수 있으며, 실전 자동화 시스템에서도 널리 활용됩니다. RESTful API의 기본기를 탄탄히 다지고 싶은 분이라면 반드시 익혀야 할 필수 라이브러리입니다.
참고 출처
- Requests 공식 문서: https://docs.python-requests.org
- Python Web Programming Cookbook
- FastAPI, Flask 연동 예제 및 공식 튜토리얼
728x90
'Artificial Intelligence > 60. Python' 카테고리의 다른 글
| [PYTHON] Regex 완전 정복 : 정규표현식으로 문자열 다루기 (0) | 2025.07.22 |
|---|---|
| [PYTHON] BeautifulSoup 완전 안내 : 웹 크롤링의 핵심 요소 (0) | 2025.07.22 |
| [PYTHON] Selenium으로 웹을 자동화하는 모든 방법 (0) | 2025.07.22 |
| [PYTHON] PyTorch 완전 가이드 : 직관적이고 강력한 딥러닝 프레임워크 (0) | 2025.07.21 |
| [PYTHON] Seaborn 완전 가이드 : 아름다운 데이터 시각화를 위한 실전 팁 (0) | 2025.07.21 |