Python HTTP 클라이언트 라이브러리: requests

개요

requests는 Python에서 HTTP 통신을 처리하기 위한 라이브러리이다. urllib3을 기반으로 구축되어 있으며 urllib2의 모든 기능을 계승한다. 가장 큰 장점은 별도의 스레드 풀 관리 없이도 쉽게 사용할 수 있다는 점이다. 복잡한 설정 과정 없이 직관적인 API를 제공하므로 HTTP 테스트 및 웹 스크래핑 작업에 적합하다.

설치는 다음 명령어로 수행한다:

pip install requests

임포트 방법은 다음과 같다:

import requests

주요 사용법

GET 요청

서버에서 데이터를 가져올 때 사용한다. 가장 기본적인 요청 방식이다.

import requests

response = requests.get(url="http://www.example.com")
print(response.status_code)

POST 요청

서버로 데이터를 전송할 때 사용한다. GET 요청과 달리 요청 본문에 데이터를 포함하여 전송한다.

import requests

keyword = input("검색어를 입력하세요: ")
api_url = "https://example.com/api/search"

playload = {
    "search": keyword,
}

request_headers = {
    'User-Agent': "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36",
}

response = requests.post(url=api_url, data=playload, headers=request_headers)
print(response.json())

참고:

  • data 파라미터는 URL에 포함되지 않고 요청 본문으로 전송된다
  • datajson 파라미터는 유사한 역할을 하나 전송 방식이 다르다
  • GET 요청에 사용 가능한 대부분의 파라미터는 POST 요청에도 적용 가능하다

HEAD 요청

응답 헤더 정보만 가져올 때 사용한다. 전체 본문을 다운로드하지 않고 헤더 정보를 확인하고 싶을 때 유용하다.

import requests

target_url = "http://www.example.com"
http_headers = {
    'User-Agent': "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36",
}

response = requests.head(url=target_url)
print(response.headers)

PUT 요청

기존 리소스를 업데이트할 때 사용한다.

POST와 PUT의 차이점:

  • POST: 새로운 리소스를 생성할 때 사용
  • PUT: 지정된 URI의 기존 리소스를 대체할 때 사용

실전 예제

파일 업로드

requests 라이브러리를 사용하면 파일을 서버로 쉽게 업로드할 수 있다.

import requests

file_dict = {"uploaded_file": open("C:\\Users\\user\\Documents\\sample.txt", "rb")}

result = requests.post("http://httpbin.org/post", files=file_dict)
print(result.status_code)

쿠키 획득

세션 관리나 인증에 필요한 쿠키 정보를 가져오는 방법이다.

방법 1: 직접 접근

import requests

session = requests.get('https://www.example.com/')
http_cookies = session.cookies
print(http_cookies)

방법 2: 함수로 캡슐화

import requests

def extract_cookies():
    req = requests.get('https://www.example.com/')
    print(req.cookies)
    return ''.join('{0}={1};'.format(k, v) for k, v in req.cookies.items())

extract_cookies()

API 데이터 조회

실제 API 엔드포인트에서 데이터를 가져오는 예제이다.

import requests

http_headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:99.0) Gecko/20100101 Firefox/99.0'}
session_cookies = requests.post('https://example.com/stock/S/SH000001', headers=http_headers)
session_cookies = session_cookies.cookies

data_response = requests.get(
    'https://api.example.com/v5/stock/quote.json?symbol=SH000001&extend=detail',
    timeout=5,
    cookies=session_cookies,
    headers=http_headers
)
print(data_response.json())

태그: python requests HTTP api web-scraping

5월 25일 17:03에 게시됨