HTML 요청을 보낼 때 방법은 총 7가지가 있습니다. 그 중 가장 많이 쓰이는 것은 아래 4가지 방법입니다.
1) get : 서버에서 데이터를 가져와라
2) post : 게시물 올리고 데이터를 제출하면서 조치를 해달라고 할 때
- 대표적인 예시; 회원가입, 로그인, ...
3) put : 수정
4) delete : 삭제
이번 시간에는 이 중에서 Post Request 기반 크롤링을 하는 방법을 배워보았습니다.
Post 요청의 대표적인 예시엔 회원가입, 로그인이 있습니다.
다음과 같은 상황이라면 Post 요청을 의심해볼 수 있습니다.
1. 특정 버튼을 클릭해서 화면이 넘어갔는데도 URL이 안변한다 ? -> Post 요청 의심
2. 개발자 도구 -> Network -> Request Method가 Post인지 확인

3. Post 요청이 맞다면, Form data (또는 Headers 탭 옆의 Payload 탭)에서 Form data 구성 확인 및 복사
4. Form data를 포함하여 URL과 함께 Post 요청 후 돌아온 데이터 처리
(get 함수와 요청 형태가 많이 다르기에 주의해야한다.)
Post 요청의 특징
[get 요청과 비교해보기]
web = requests.get(url).content
source = BeautifulSoup(web, 'html.parser')
[post 요청]
data={ }
response = requests.post(json_url, data)
result = response.loads(response)
# header가 아니라 data로 post 요청 보내기
# URL은 보여있는 부분에서 들고 오는 것이 아닌, 개발자 도구에서 Request URL을 들고와야한다
data = {'stdrYyCd': '2021', 'stdrQuCd': '4', 'stdrSlctQu': 'sameQu', 'svcIndutyCdL': 'CS000000', 'svcIndutyCdM': 'all'}
response = requests.post('https://golmok.seoul.go.kr/region/selectRentalPrice.json', data=data).content
# HTML 해석하는 것은 BeautifulSoup지만,
# json 해석하는 것은 json.loads
result = json.loads(response)
result[0]
이후 부분은 다음과 같이 get 요청에서 데이터 처리하듯이 써주면 된다.
temp_data = []
for item in result:
temp_data.append(item['BF3_TOT_FLOOR'])
temp_data'멋쟁이 사자처럼 AI SCHOOL 5기 > Today I Learned' 카테고리의 다른 글
| [3주차 총정리] 웹스크래핑, Open API (부동산 매매 신고 자료) (0) | 2022.03.30 |
|---|---|
| [3주차 총정리] 웹스크래핑, table 태그 설명 (네이버 상승주) (0) | 2022.03.29 |
| [3주차 총정리] Wadis 마감 상품 재고 체크 & 메일 발송 크롤링 (0) | 2022.03.29 |
| [3주차 총정리] Selenium으로 브라우저 제어 자동화하기(2) _ 인터파크 투어 크롤링 (0) | 2022.03.29 |
| [3주차 총정리] Selenium으로 브라우저 제어 자동화하기 (0) | 2022.03.29 |