파이썬 requests 라이브러리에 대해서 깊게 알려주는 강의들이 없길래
제가 외주개발하면서 자주 사용하는 requests 모듈 '기초' 강의를 만들고 있습니다.
단순히 requests.get(url) 코드만 사용하시던 분들에게
requests 고급(?) 사용법을 알려드리겠습니다
1. Requests 모듈의 근본 GET 요청부터 해볼까요?
requests.get(url) 100번 쯤 해본 사람은 이거 안 읽으셔도 됨
이번 블로그에서 사용한 코드 전체 원문 소스가 필요하신분은 여기를 방문해주세요
2024.12.30 - [Python Requests 기초 강의] - Python requests 기초 강의 proxy, user-agent 바꾸는 법 [1강/소스코드 원문]
import requests
# 1. Requests Get 요청
response = requests.get("https://httpbin.org/get")
print(response.text)
print(response.json())
print(type(response.text), type(response.json()))
print(response.json()['url'], response.json()['origin'])
response.json() 코드의 장점은 파이썬에서 바로 사용할 수 있는 dictionary 자료구조 형태로 response 값을 만들어 줍니다.
2. Requests GET 요청 Parameter, Query String 전달하는법
하나하나 url에 직접 입력하지마셔유..
import requests
# 2. Requests GET 요청에서 Parameter, Query String
# name=hello&data=world
params = {"name":"hello","data":"world"} # dictionary 형태로 만들어서
response = requests.get("https://httpbin.org/get", params=params) #여기 넣어주면 끗
print(response.url) #여기에 쿼리 스트링이 붙어있는 url을 바로 확인 가능
print(response.json()['url'])
name=hello&data=world라는 쿼리 스트링으로 Parameter를 만들고 싶을 때는 'params'이름의 파라미터를 사용해주세요. dictionary 형태로 쿼리 스트링을 만들어서 params 이름으로 전달해주시면 됩니다.
내가 만든 url이 제대로 잘 만들어졌는지 확인하는 방법은
response.url을 출력해보시면됩니다 ! (so easy)
3. Requests POST data 보내는 방법
import requests
# 3. Requests POST 요청
payload = {"name":"hello","data":"world"}
response = requests.post("https://httpbin.org/post",data=payload)
json_data = response.json()
import json
print(json.dumps(json_data,indent=4))
json 데이터 예쁘게 보여주려면 import json해서,
json.dumps(json_data) 넣어주시면 됩니다.
terminal 창에서 예쁘게 나와용.
4. Requests 헤더의 User Agent 변경하는 방법
코드 1줄이면 됩니다. 이거 안 넣어서 scraping할때 response 차단되는 경우 많어요
import requests
# 4. Requests Header수정 User-Agent 수정
headers = {"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36"}
response = requests.get("https://httpbin.org/user-agent",headers=headers)
useragent = response.text
print(useragent)
어때요 간단하죠? 단, 주의하실점은 headers 파라미터에 꼭 'User-Agent' 글자 그대로 대문자를 잘 넣어주세요. headers 파라미터에 유저 에이전트뿐만 아니라 다양한 값들을 변경할 수 있습니다
밑에 보면 Accept-Language나 Cookie도 직접 바꿀수있는데, 쿠키는 또 cookies 파라미터를 전달할 수 있게 되어있습니다
some_cookie = {"key":"value"} # 이렇게 Dictionary 형태로 전달하면 됨
response = requests.get("https://httpbin.org/user-agent",cookies=some_cookie)
Ctrl + Shift + I 누르시면 크롬 개발자도구가 나오는데요(엣지건, 파이어폭스건 단축키는 똑같음)
Chrome Network 탭에서
아무 request나 클릭해서 Headers 들어가시면 확인 됩니다
[전체화면 모습]
5. Requests timeout 설정하는 방법
import requests
# 5. Requests timeout 설정하는 방법
# Requests default timeout 값이 None, Pending
# 나 3초만 기다리겠다
try:
response = requests.get("https://httpbin.org/delay/5",timeout=3)
print(response.text)
except Exception as e:
print("타임아웃 3초 지남", e)
requests 모듈의 timeout 디폴트 값은 None입니다
이게 뭔말이냐?
connection이 끊어지는게 아니면, 무한으로 기다린다는 뜻입니다 ㅋ
requests 데이터 가지고 올때 무한으로 기다릴 수 없으니
프록시 서버를 쓰는지, 해당 웹 페이지 로딩 속도는 어느정도인지 종합적으로 고려해서 적절한 timeout값을 넣어주면 되겠습니다 ㅇㅇ
# 6. Requests Proxy 서버 사용하는 방법
import requests
proxy_server_url = "27.79.214.215:16000" #이거 지금 글 읽고 있으신분 컴퓨터에선 작동 안 될 수 있음 왜냐하면
proxies = {
'http':proxy_server_url,
"https":proxy_server_url
}
response = requests.get("https://httpbin.org/get", proxies=proxies)
json_data = response.json()
import json
print(json.dumps(json_data,indent=4))
Proxy 서버를 사용해서 requests 요청을 날리는 기본 코드입니다. So Easy
proxy_server_url 사용할 때 주의하셔야할 점은
2024년 12월 30일 기준으로 해당 프로시 서버는 작동하고 있는데,
무료 프록시 서버 리스트는 계속해서 바뀝니다.
(아니, 그러면 개발할 때 마다
프록시 서버 IP랑 포트번호를 찾아야하잖아욧!!)
ㄴㄴ 그렇진 않아요
다음번 글(영상)에서는 무료 프록시 리스트를
1. Requests 모듈을 사용해 scraping해와서
2. 유요한 proxy server인지, 사용가능한 프록시 서버인지 체크해주는
파이썬 스크립트를 만들어보겠습니다 !
다음번 글도 기대해주세요 !
이번 글에서 사용된 코드 원본 필요하신분? 글 보러가기
'Python Requests 기초 강의' 카테고리의 다른 글
셀레니움(Selenium) 쿠키를 활용해 requests 쿠키값으로 사용하는 방법 (0) | 2025.01.06 |
---|---|
Python Requests Session 사용법, 속도와 효율 모두 잡기 (0) | 2025.01.04 |
Python requests 기초 강의 proxy server 사용하는 방법 [2강/2025년] (0) | 2024.12.31 |
Python requests 기초 강의 proxy, user-agent 바꾸는 법 [1강/소스코드 원문] (1) | 2024.12.30 |
Python Requests 모듈 사용법 가이드 (2) | 2024.11.07 |