파이썬 requests 정리 및 사용법

python requests

request 패키지는 가장 많이 사용하는 라이브러리중 하나이며
request를 이용하면 쉽게 http 요청을 보낼수 있습니다.

패키지 설치

1
pip install requests

Request

기본적으로 아래와 같이 요청합니다. ※ requests.get()

1
2
3
4
5
res  = requests.get(url)
res = requests.post(url)
res = requests.delete(url, data={'key':'value'})
res = requests.head(url)
res = requests.options(url)

상황에 맞게 헤더, 파일, 타임아웃 등 포함해
요청할 수 있습니다.

※ 요청시 timeout은 항상 포함시키는것이 좋습니다.

1
2
3
4
5
6
7
8
headers = {'User-Agent': 'Mozilla/5.0'} 
timeout = 5
res  = requests.post(url,headers=headers, timeout=timeout)

data        = {'key1':val1 'key2':val2'}
files       = [('image', (image.png, open(image.png, 'rb'), 'image/png', {'Expires': '0'}))]    
headers     = {'Authorization': token }
res = requests.post(url, headers=headers,  files=files, data=data)  

request 요청이 성공하면
응답상태 와 응답 데이터가 전송되어 옵니다.


응답데이터 Response Content

속성 설명
status_code 응답 상태를 확인할 수 있습니다.
headers headers정보를 확인합니다.
cookies cookies정보를 확인합니다.
encoding 데이터 인코딩을 확인할 수 있습니다.
text 'str 타입의 데이터
content bytes 타입의 데이터
.json() dict 타입의 데이터 일 경우 사용

네이버 증권의 종목 통합검색창에서 검색시 사용되는
URL을 샘플로 테스트 했습니다.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
import requests
headers = {'User-Agent': 'Mozilla/5.0'} 
timeout = 5

def get_stock(symbol):
      url = 'https://ac.finance.naver.com/ac?q=%s&q_enc=euc-kr&t_koreng=1&st=111&r_lt=111' % symbol
      return requests.post(url,headers=headers, timeout=timeout)
if __name__ == '__main__':
      r = get_stock("ACTC")
      print(r.status_code)
      print(r.headers)
      print("\n==========TEXT")
      print("text - %s " % r.text[:100]) #UTF-8로 인코딩된 문자열
      print("type - %s " % type(r.text))
      print("\n==========CONTENT")
      print("type - %s" %  type(r.content))
      print("content -  %s" % r.content[:100])      
      print("\n==========JSON")
      print("type - %s" %  type(r.json()))
      print("text - %s " % r.json()['query'])
      print("\n==========EnCoding")
      print("encoding - %s" %r.encoding)
      r.encoding = 'ISO-8859-1'
      print("\nencoding - %s" %r.encoding)

TAG: #requests #timeout #예제