참고한 링크 : https://mommoo.tistory.com/60
클라이언트가 서버에게 웹페이지를 보여달라고 말하는 것은 '요청', 서버가 클라이언트에게 요청받은 것에 대한 대답으로 웹페이지 내용을 표현하기 위해 html문서를 주는 것을 '응답'이라고 부른다.
GET방식 : 클라이언트의 데이터를 URL뒤에 붙여서 보낸다.
www.example.com?id=mommoo&pass=1234 를 예로 들자.
?뒤가 정보이고 id=mommoo, pass=1234 이 각각의 항목이다.
(key - value쌍)
이는 보안상의 문제점이 있고 용량의 한계도 있어
아이디, 비밀번호 또는 파일 등의 용량이 큰 데이터를 보낼 때는 POST방식을 쓴다.
쿠팡은 링크
https://www.coupang.com/np/search?q=%EB%85%B8%ED%8A%B8%EB%B6%81&channel=user&component=&eventCategory=SRP&trcid=&traid=&sorter=scoreDesc&minPrice=&maxPrice=&priceRange=&filterType=&listSize=36&filter=&isPriceRange=false&brand=&offerCondition=&rating=0&page=2&rocketAll=false&searchIndexingToken=1=5&backgroundColor=
를 보면 판매항목 페이지를 요청할 때는 GET방식을 사용함을 알 수 있다.
import requests
from bs4 import BeautifulSoup
url = "https://www.coupang.com/np/search?q=%EB%85%B8%ED%8A%B8%EB%B6%81&channel=user&component=&eventCategory=SRP&trcid=&traid=&sorter=scoreDesc&minPrice=&maxPrice=&priceRange=&filterType=&listSize=36&filter=&isPriceRange=false&brand=&offerCondition=&rating=0&page=2&rocketAll=false&searchIndexingToken=1=5&backgroundColor="
headers = {"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36"}
cookies = {"":""} # 아예 비어있으면 내용 변환을 안 함
res = requests.get(url, headers=headers, cookies=cookies)
res.raise_for_status()
soup = BeautifulSoup(res.text, "lxml")
print(res.text)
강의대로하니 안 돼서 애를 먹었다.
UserAgent만 바꾼다고 되는게 아니라 아예 쿠키까지 비워야한다.
post방식은 다음과 같은 특징이 있다.
클라이언트와 서버 간에 스트링 형태로 그대로 서버에 전달되지 않고 '인코딩'이라는 과정을 거친다.
헤더를 통해 요청이 전송되는 방식이다.
이 때문에 GET방식과 같이 URL이 노출되지 않습니다.
요청 시 GET 보다 더 많은 양의 정보를 교환할 수 있다.
페이지에서 날짜를 설정하고 조회하기 버튼을 눌렀을 때 서버는 DB에서 해당 기간에 해당되는 정보를 불러와 우리에게 보여준다. 이 때 사용되는 방식이 바로 POST 방식이다.
조회하기 버튼을 눌렀을 때 URL이 클라이언트에게 노출이 되지 않으며, GET방식에 비해 더 많은 양의 정보를 받아올 수 있다는 장점이 있다.
BODY에 데이터를 key - value 형식으로 넣어서 전송한다.
그래서 get방식처럼 주소창만 보고 전송하는 데이터를 추측할 수 없다.
ex.
import requests
payload = {'key1':'value1','key2':'value2'}
r = requests.post("~~~~", data = payload)
print(r.text)