Luv{Flag}
article thumbnail
반응형

.

 

 

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())

 

 

get 요청 응답중 일부

 

 


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

검색 태그

loading