신규 블로그를 만들었습니다!
Python3 requests 모듈
API를 사용할 때, 주로 사용하곤 하는 requests 모듈에 대해 살펴보려 합니다. 사용하는 방법은 매우 쉽습니다. 사용을 할때는 보통 HTTP 메소드(method, 또는 함수)의 GET 과 POST를 사용합니다.
GET을 사용할 때는 requests.get()을 사용하고, POST를 사용할때는 requests.post()를 사용합니다. 예제를 통해 더 자세히 살펴보도록 하겠습니다. 그전에 우선 설치하는 방법을 알아보도록 하겠습니다.
1. requests 모듈 설치
requests 모듈을 사용하기 위해서는 pip를 통해 설치를 해야 합니다. pip는 python 3.4이상 버전부터는 자동으로 같이 설치가 되기 때문에, 따로 설치할 필요없습니다. 아래 명령어를 통해 requests 모듈을 설치합니다.
pip install requests
참고
만약 proxy 서버가 존재하는 경우, --proxy ip:port 옵션을 추가하면 됩니다. 예를들어보면
pip install --proxy 123.123.123.123:3128 모듈명
보통 집에서 사용할때는 proxy를 사용 안하기 때문에 옵션을 넣을 필요 없습니다.
2. 사용해보기
네이버와 구글에 GET 요청을 보내보도록 하는 예제를 살펴보겠습니다.
import requests
url = "http://www.naver.com"
response = requests.get(url)
print("status code :", response.status_code)
결과는 위와 같습니다. 응답코드로 200 Okay가 넘어오고, 정상적으로 값을 받았다는것을 알 수 있습니다. 응답코드를 모르시는 분은 한번 살펴보시고 오시길 바랍니다.
POST 메소드를 사용하는 방법도 간단합니다. get() 메소드가 아닌 post() 메소드를 사용하면 됩니다.
import requests
url = "http://www.naver.com"
#response = requests.get(url)
response = requests.post(url)
print("status code :", response.status_code)
결과 값은 위와 똑같이 200 Okay 값이 넘어오는 것을 알 수 있습니다. 이번에는 더 나아가서, 데이터를 같이 보내고 싶을때는 어떻게 하는지 살펴보도록 하겠습니다.
3. 데이터와 같이 보내기
3-1. GET으로 parameter 넘기기
get 메소드에서는 데이터를 보낼때 2가지 방법이 존재합니다.
첫번째 방법 - 직접 파라미터 넣어서 보내기
import requests
url = "http://www.naver.com?a=bbb&b=123"
response = requests.get(url)
print("status code :", response.status_code)
두번째 방법 - dictionary 이용하기
import requests
paramDict = {
"a" : "bbb",
"b" : 123
}
url = "http://www.naver.com"
response = requests.get(url, params=paramDict)
print("status code :", response.status_code)
2번째 방법을 사용할때는, get 메소드의 params 인자값에 key:value 형식의 자료형을 넣어줍니다.
parameter 형태
자료형이름 = { "param1" : "value1", "param2" : "value2", 계속해서 추가... }
똑같은 기능을 수행하지만 위와같이 2가지 방법이 존재합니다.
3-2. POST로 data 보내기
post로 보낼때는 url 주소에 파라미터를 넣지 않기 때문에 위 2번째 방법과 같이 보내야 합니다. 하지만, 1가지 다른점이 존재합니다. get메소드에서는 params 인자를 사용하지만, post 메소드에서는 data라는 인자를 사용합니다. 예제를 살펴봅시다.
import requests
#paramDict = {
datas = {
"a" : "bbb",
"b" : 123
}
url = "http://www.naver.com"
#response = requests.get(url, params=paramDict)
response = requests.post(url, data=datas)
print("status code :", response.status_code)
4. SSL 인증서를 사용하는 경우
요즘은 보안때문에 http보다 https를 많이 사용합니다. 간혹 SSL 때문에 오류가 발생하곤 하는데 그럴때는 verify 옵션을 넣어주면 됩니다. 예제를 살펴봅시다.
import requests
url = "https://www.naver.com"
response = requests.post(url, verify=False)
print("status code :", response.status_code)
verify 옵션을 넣을때는 False로 해서 넣어줍니다. default 값은 True 입니다.
5. 인증이 필요한 경우
API를 사용할때 key 토큰을 할당받아서 사용하기도 하지만, id와 password를 통해 인증을 하는 경우도 있습니다. 이때는 auth 옵션을 사용합니다.
import requests
url = "https://www.naver.com"
response = requests.post(url, auth=("id","pass"))
print("status code :", response.status_code)
6. 그 밖에 다른 옵션들
headers = {'Content-Type': 'application/json; charset=utf-8'}
cookies = {'sessionKey': 'sessionValue'}
timeout = 3
샘플코드
import requests
url = "https://www.naver.com"
#url = "https://www.test.com"
rs = requests.post(url)
# response code
rs_code = rs.status_code
if int(rs_code) == 200 :
print("Okay")
rs_text = rs.text
print(rs_text)
else :
print(rs_code)
print("Fail")
관련된 글
2018/08/29 - [Language/Python] - Python :: 파이썬을 사용하는 이유? (프로그래밍 언어)
2018/08/30 - [Language/Python] - Python :: 파이썬 개발도구, IDLE 과 서브라임 텍스트 (설치 및 다운로드)
2018/09/03 - [Language/Python] - Python :: 파이썬 문자열(string) 알아보기(이스케이프 문자, 인덱싱, 슬라이싱)
2018/09/08 - [Language/Python] - Python :: 파이썬 리스트(List) 사용방법과 여러가지 메소드
2018/09/19 - [Language/Python] - Python :: 파이썬 튜플(Tuple) 자료형 개념과 사용방법
Reference
'Language > Python' 카테고리의 다른 글
Python :: 파이썬 난수 만들기/ 랜덤한 숫자, 문자열 만들기/ 비밀번호 만들기 (5) | 2018.10.13 |
---|---|
Python :: 파이썬 딕셔너리(Dictionary) 사전 개념 및 사용방법 (0) | 2018.10.03 |
Python :: 파이썬 튜플(Tuple) 자료형 개념과 사용방법 (0) | 2018.09.19 |
Python :: 파이썬 리스트(List) 사용방법과 여러가지 메소드 (0) | 2018.09.08 |
Pycharm CE :: 맥북에 파이참 설치하기 (Python 파이썬 개발 도구) (0) | 2018.09.06 |
최근댓글