본문 바로가기
Programming/Python

[파이썬] 웹 url 호출하기 requests post/get

by 코딩하는 금융인 2021. 6. 9.

파이썬을 활용한 html 다루기

Web html api를 호출하는 방법은 여러 가지가 있습니다.

javascript 등 여러 가지 방법이 있지만, 파이썬 requests 모듈의 get과 post 방식에 대해 소개해드리겠습니다.

 

파이썬 requests 모듈 설치

파이썬 Terminal에 pip를 활용하여 설치하기

# 파이썬 requests 모듈 설치
pip install requests

 

Website에 요청하기

네이버 사이트에 호출

먼저, get 방식으로 웹사이트에 호출해보겠습니다.

import requests

# Get Api 호출
url = "http://www.naver.com"
response = requests.get(url= url)
print(response)

# 결과 : 요청 성공
<Response [200]>

여기서 Response 200 의미는 요청 "성공" 의미

 

post 방식 호출

import requests

# Get Api 호출
url = "http://www.naver.com"
response = requests.post(url= url)
print(response)

# 결과 : 요청 성공
<Response [200]>

 

요청하는 Data와 함께 보내기

웹사이트의 특정 data 항목이 있을 때 get과 post는 전달인자에서 차이를 보임.

# Parameter 전달법
code = '1234'
params = {'code':code}
r = requests.get(url = url, params=params)
response = requests.post(url = url, data = params)

- get 방식은 params로 받아야 하지만, post 방식은 data로 받아야 함.

 

# 전달하는 데이터가 dict 타입이 아닌 str 타입일 경우
import json

code = '1234'
params = {'code':code}
url = "http://localhost/test"
response = requests.post(url = url, data = json.dumps(params)) # json.dumps로 전달인자 json 포맷

 

SSL 인증서 사용하는 경우

SSL 의미 : https://blog.naver.com/skinfosec2000/222135874222

url = "https://www.naver.com"
response = requests.post(url, verify = False)

print("statuse code : ", response.status_code)

# 결과
statuse code :  200

verify = False 설정을 통해서 보안으로 발생하는 SSL 이슈 해결

 

자주 사용하는 기타 옵션

▶ 인증 필요

url = "https://www.naver.com"
idnpass = ("abcd","1234") # id와 password
response = requests.post(url, auth = idnpass)

 

▶ 헤더나 쿠키 설정 <로봇 감지 방지>

# Header, Cookie 추가
headers = {'Content-Type': 'application/json; charset = utf-8'}
cookies = {'id': 'WJEJGJ9231M1RR2OP'}
res = requests.get(url, headers = headers, cookies = cookies)

 

▶ 시간 조절

# timeout을 통한 시간 조절 뒤에 timeout쓰면 됨.
timeout = 3
res = requests.get(url, timeout = timeout)

 

실제 적용 예시

- post 방식을 활용한 크롤링 예제 바로가기

 

References
반응형

댓글