웹 개발 및 데이터 분석을 할 때, HTTP 요청을 보내고 응답을 처리하는 것은 매우 중요한 과정입니다. Python에서는 다양한 HTTP 클라이언트 라이브러리를 사용하여 서버와 데이터를 주고받을 수 있습니다. 이번 글에서는 Python의 주요 HTTP 라이브러리와 그 사용법을 정리하겠습니다.
Python에서는 HTTP 또는 HTTPS 프로토콜을 사용하여 데이터를 송수신할 수 있습니다. 이 과정에서 주로 웹 스크래핑, API 호출, 웹 서비스 통신 등의 용도로 HTTP 요청을 보냅니다.
requestsurllibhttp.clientrequests 라이브러리 사용법request 메서드 사용import requests
req = requests.request('GET', 'https://httpbin.org/get')
print(req.status_code)
print(req.text)
method: HTTP 메서드 (GET, POST, PUT, DELETE 등)url: 요청을 보낼 대상 URLparams: (선택 사항) URL의 쿼리 문자열을 위한 딕셔너리data: (선택 사항) 요청 본문에 포함할 데이터json: (선택 사항) JSON 데이터 전송 시 사용headers: (선택 사항) HTTP 헤더 포함GET 요청 보내기import requests
response = requests.get('https://httpbin.org/get', params={'key': 'value'})
print(response.json())
params를 이용해 쿼리 스트링을 추가할 수 있습니다.HTTP 요청을 보낸 후에는 서버로부터 응답을 받게 됩니다. requests 라이브러리는 응답 데이터를 다양한 속성으로 제공하여 쉽게 활용할 수 있습니다.
content: 바이트 단위로 응답 데이터를 반환text: 응답 데이터를 유니코드 문자열로 변환json(): JSON 형식의 응답 데이터를 파싱import requests
response = requests.get('https://httpbin.org/status/200')
print(response.status_code) # 200
status_code: HTTP 응답 상태 코드 (예: 200 OK, 404 Not Found 등)reason: 응답 상태 메시지 (예: "OK", "Not Found" 등)print(response.headers)
headers: 응답 헤더를 딕셔너리 형태로 반환POST 요청 보내기POST 요청을 사용하면 데이터를 서버로 전송할 수 있습니다.
import requests
payload = {'username': 'test', 'password': '1234'}
response = requests.post('https://httpbin.org/post', data=payload)
print(response.json())
data: 요청 본문에 포함할 데이터를 전달HTTP 요청 시 예상치 못한 오류가 발생할 수 있으므로 예외 처리를 적용하는 것이 중요합니다.
import requests
try:
response = requests.get('https://httpbin.org/status/404')
response.raise_for_status() # 상태 코드가 400 이상이면 예외 발생
except requests.exceptions.HTTPError as err:
print(f'HTTP 오류 발생: {err}')
except requests.exceptions.RequestException as err:
print(f'요청 오류 발생: {err}')
raise_for_status(): HTTP 오류가 발생하면 예외를 발생시킴Python에서 HTTP 요청을 보낼 때 requests 라이브러리는 가장 많이 사용되는 간편한 도구입니다.
requests를 활용하면 좋습니다.urllib이나 http.client를 사용할 수 있습니다.Python의 HTTP 클라이언트를 활용하여 데이터를 효율적으로 주고받는 방법을 익히면, 웹 개발과 데이터 분석에 유용하게 활용할 수 있습니다.