반응형
.
PIP(파이썬 패키지 매니저)를 이용해 설치하고
$pip install requests
requests 모듈을 import 하여 사용한다.
import requests
GET,POST 뿐만 아니라,
HTTP Request 옵션 PUT, OPTIONS, HEAD, DELETE 들을 아주 간편하게 지원합니다.
r = requests.get('https://exam.com')
r = requests.put('https://exam.com', data={'key': 'value'})
r = requests.delete('https://exam.com/delete')
r = requests.head('https://exam.com/get')
r = requests.options('https://exam.com/get')
GET
GET 요청은 두가지 방식으로 진행 할 수 있습니다.
payload = {'key1': 'value1', 'key2': 'value2'}
r = requests.get('https://exam.com/get', params=payload)
####
r = requests.get('https://exam.com/get?key1=value1&key2')
.text 로 response 값을 읽을 수도 있습니다.
print(r.text)
.json() 으로 json형태의 response 역시 읽을 수 있습니다.
print(r.json())
Headers
요청에 header 값을 직접 추가하고 싶은 경우, 딕셔너리 형태로 값을 지정 할 수 있습니다.
url = 'https://exam.com'
headers = {'user-agent': 'Trident'}
r = requests.get(url, headers=headers)
POST
POST 요청은 data 인자에 딕셔너리 형태로 값을 전송 할 수 있습니다.
datas = {'key1': 'value1', 'key2': 'value2'}
r = requests.post('https://httpbin.org/post', data=datas)
print(r.text)
json 데이터는 json 매개변수, 또는 json.dumps 를 사용하여 전송할 수 있습니다.
datas = {'id': 1, 'name': 'povgen'}
r1 = requests.post(url, json={'id': 1, 'name': 'povgen'})
r2 = requests.post(url, data=json.dumps(payload))
단, r2의 경우 Content-Type 헤더의 application/json 을 설정하지 않아야 합니다.
Cookies
응답에 cookie가 포함되어 있을때, 다음과 같이 쿠키 값에 접근 할 수 있습니다.
url = 'http://povgen.com'
r = requests.get(url)
print(r.cookies['cookie_name'])
만약, 쿠키값을 포함해 전송하고 싶다면, cookies 매개변수로 지정할 수 있습니다.
url = 'https://lovflag.tistory.com'
cookie = {'session': 'awef415234ew8f2'}
r = requests.get(url, cookies=cookie)
print(r.text)
응답 객체
요청에 대한 응답을 객체로 받는다.
url = 'http://povgen.com'
r = requests.get(url)
# 응답 코드 확인
r.status_code
# status 200 이 아닌 경우 에러
r.raise_for_status()
# json response일 경우 딕셔너리 타입으로 바로 변환
r.json()
# byte 단위 데이터를 출력 - binary 형태의 응답에 적절
r.content
# 응답을 문자열로 처리하여 출력 - html, json, xml,...
r.text
# encoding 정보 확인
r.encoding
한글 깨짐 문제
간혹 request를 보내고 응답의 .text 를 확인하고 싶을 때, 한글이 깨져 보이는 경우가 존재한다.
원인은 인코딩이 달라서 발생하는 문제이므로 직접 인코딩 방식을 정해줄 수 있다.
r = requests.get('http://lovflag.tistory.com')
r.encoding ### 인코딩 방식 확인
r.encoding = 'utf-8' ### utf-8 인코딩 방식 지정
utf-8 방식 외에도 다양한 인코딩 방식을 지정해 줄 수 있다.
반응형
'Web > Python' 카테고리의 다른 글
파이썬 문자열 완전탐색 코드 (Python brute force) (0) | 2022.11.15 |
---|