파이썬을 활용한 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)
실제 적용 예시
References
반응형
'Programming > Python' 카테고리의 다른 글
파이썬 유튜브 크롤링 셀레니움 1편 (5) | 2021.06.14 |
---|---|
파이썬 collections 컨테이너형 자료 모듈 (0) | 2021.06.13 |
[Python] 정규표현식 텍스트 전처리 (원하는 문자 추출) (0) | 2021.06.05 |
[Python] 파이썬 이미지 사이즈 분류하기 (0) | 2021.06.02 |
[Python] 파이썬 영화 사이트 (씨네21) 크롤링 2 (0) | 2021.06.01 |
댓글