CHHB stroy
🌐 Python Requests 완벽 가이드 본문
Python 개발자라면 반드시 알아야 할 필수 라이브러리!
requests는 웹 서버와 데이터를 주고받을 때 가장 많이 사용되는 HTTP 라이브러리입니다. 간결한 문법, 강력한 기능, 실무 적용 예시까지 모두 담았습니다.
📦 설치 방법
Python 패키지 관리자인 pip를 사용해 간단하게 설치할 수 있습니다.
pip install requests
📝 기본 사용법
아래 예제는 GET, POST 등 가장 많이 사용되는 HTTP 요청 방법을 보여줍니다.
import requests
# 1. GET 요청: 데이터를 가져오기
response = requests.get('https://jsonplaceholder.typicode.com/posts/1')
print("Status Code:", response.status_code)
print("본문:", response.text)
# 2. POST 요청: 데이터 전송하기
data = {'title': 'foo', 'body': 'bar', 'userId': 1}
response = requests.post('https://jsonplaceholder.typicode.com/posts', json=data)
print("생성된 데이터:", response.json())
🏷️ 주요 기능별 예제
1. 쿼리스트링(GET 파라미터) 전달
URL에 직접 파라미터를 추가하는 대신 params 인자를 사용하면 훨씬 깔끔하게 코드를 작성할 수 있습니다.
params = {'userId': 1}
response = requests.get('https://jsonplaceholder.typicode.com/posts', params=params)
print(response.json())
2. 헤더(Header) 설정
요청에 필요한 헤더 정보를 딕셔너리 형태로 headers 인자에 전달합니다.
headers = {'User-Agent': '개발자 블로그/1.0'}
response = requests.get('https://httpbin.org/headers', headers=headers)
print(response.json())
3. 폼 데이터(Form Data) & 파일 업로드
data 인자로 폼 데이터를, files 인자로 파일을 전송할 수 있습니다.
# 폼 데이터 전송
data = {'key1': 'value1'}
response = requests.post('https://httpbin.org/post', data=data)
print(response.json())
# 파일 업로드
files = {'file': open('sample.txt', 'rb')}
response = requests.post('https://httpbin.org/post', files=files)
print(response.json())
4. 타임아웃 & 예외 처리
네트워크 문제 등으로 요청이 지연될 경우를 대비해 timeout을 설정하고 try-except 구문으로 예외를 처리하는 것이 좋습니다.
import requests.exceptions
try:
response = requests.get('https://httpbin.org/delay/5', timeout=2)
print(response.text)
except requests.exceptions.Timeout:
print('⏰ 요청 시간이 초과되었습니다!')
5. 응답 JSON 파싱
서버 응답이 JSON 형식일 경우, response.json() 메서드를 사용해 딕셔너리로 바로 변환할 수 있습니다.
response = requests.get('https://jsonplaceholder.typicode.com/users/1')
user = response.json()
print(f"사용자명: {user['name']}")
6. 세션(Session) 활용
여러 요청에 걸쳐 동일한 쿠키, 헤더 등의 정보를 유지해야 할 때 Session 객체를 사용하면 효율적입니다.
with requests.Session() as session:
session.headers.update({'Authorization': 'Bearer mytoken'})
r1 = session.get('https://httpbin.org/headers')
r2 = session.get('https://httpbin.org/cookies/set?choco=chip')
print(r1.json(), r2.text)
🛠️ 실무에서 유용한 팁
- User-Agent 설정: 웹 크롤링 시 필수적으로 설정해야 하며, 웹 서버가 봇 요청을 차단하는 것을 방지할 수 있습니다.
- 응답 확인(response.ok): 요청이 성공했는지 (2xx 상태 코드)를 빠르게 판별할 수 있습니다.
- 예외 처리: requests.exceptions.RequestException으로 다양한 네트워크 에러를 한 번에 처리할 수 있습니다.
❓ 자주 묻는 질문 (FAQ)
Q: requests로 동적(자바스크립트) 페이지도 가져올 수 있나요?
A: JS로 렌더링되는 데이터는 requests로 직접 수집이 불가하며, Selenium 또는 Playwright 등 브라우저 자동화 툴을 활용해야 합니다.
Q: HTTPS 인증서 검증을 끄려면?
A: requests.get(url, verify=False)를 사용합니다. 단, 보안 위험이 있으니 신뢰할 수 없는 페이지에는 사용하지 않는 것이 좋습니다.
📌 마무리
requests 라이브러리는 단순한 REST API 연동부터 실무 데이터 크롤링, 파일 업로드/다운로드, 인증 등 거의 모든 HTTP 관련 작업을 손쉽게 처리할 수 있습니다.
문법이 어렵지 않으니, 공식 문서와 위 예제들을 참고해 바로 실전에 활용해 보세요!
이 글이 도움이 되셨다면, 공감 버튼과 댓글 부탁드립니다! 😉
'Python' 카테고리의 다른 글
| Django 프레임워크 – 파이썬 웹 개발의 강력한 무기 (1) | 2025.08.10 |
|---|---|
| 🥣 BeautifulSoup: 2025 최신 가이드 (6) | 2025.08.06 |
| 🐼 Pandas 라이브러리 자주 쓰는 함수 총정리 (3) | 2025.08.03 |
| 📌 Windows 11에서 WSL2, Docker, Python, PyCharm 설치 및 연동 가이드 (2) | 2025.08.02 |
| Python 기초 문법 완벽 정리 (0) | 2025.04.20 |