이번 시간에는 정적 웹페이지의 데이터를 가져오는 정적 웹 크롤링 라이브러리 requests를 사용해보도록 하겠습니다.
requests 라이브러리 설치
requests는 Python을 이용해서 HTTP 통신을 진행할 수 있는 라이브러리로 pip install 을 통해서 실행할 수 있습니다.
pip install requests
노트북 환경(.ipynb)에서는 %를 이용해서 터미널 코드 실행할 수 있습니다
%pip install requests
GET, POST 요청하기
- 정보를 달라고 요청하는 것은 GET method 이용
- 정보 갱신을 위한 요청은 POST method 이용
네이버 홈페이지의 GET 요청 보내고 응답 받기
import requests
res = requests.get("https://www.naver.com")
res
get 요청의 출력값으로 <Response [200]> 이라는 HTTP 응답 코드 객체가 생성되고 이를 res에 저장해서 값을 확인해보도록 합시다.
응답코드의 header과 body 내용을 확인했습니다. 여기서, requests의 .text는 모든 정보를 가져옵니다.
로그인 정보를 POST method로 보내고 응답받기
Webhook 사이트를 이용해서 통신 요청 정보를 모니터링 해보겠습니다.
Webhook.site - Test, transform and automate Web requests and emails
Upgrade to a Webhook.site account to unlock unlimited requests This URL received the maximum of {{ appConfig.MaxRequests }} requests and can't accept more requests, emails or DNSHooks. New requests sent to this URL will return HTTP status code 410 Gone or
webhook.site
Webhook 사이트에 통신 테스트를 할 수 있는 URL이 나오게 되고, 왼쪽 공간에서 통신 내역을 확인할 수 있습니다.
payload = {"name":"Hello", "age":13}
res = requests.post("https://webhook.site/4755fadc-facc-40cc-9d6d-74fb69128fb6", payload)
딕셔너리(json)형태의 payload에 보내고 싶은 정보를 담아 post 메소드를 보내보겠습니다.
post 요청의 출력값으로 이라는 HTTP 응답 코드 객체가 생성되고 이를 res에 담아 상태코드(Status code)확인해보면 200으로 잘 작동한 것을 확인 할 수 있습니다.
이제 웹상에서 정보가 제대로 전달됐는지 확인하기 위해서 webhook 페이지로 이동하면,
post로 보낸 정보가 잘 전달된 것을 확인할 수 있습니다.
Requests 모듈을 이용할 때는 원하는 내용만 가져오기 어려움
이를 위해 BeautifulSoup 라이브러리를 사용할 수 있습니다.
🔜 이어지는 다음 글 보기 [웹크롤링] 정적 웹크롤링 BeautifulSoup
[웹크롤링] 정적 웹크롤링 BeautifulSoup
requests모듈을 이용해서 HTTP요청을 보내고 응답을 받아 body내용을 확인해보았습니다.하지만, 이 경우에 원하는 요소만 가져올 수 없어서 분석하기에 어려운 점이 있었습니다. HTTP Parser을 사용하
ourjune.tistory.com
'데브코스 데이터엔지니어링' 카테고리의 다른 글
[웹크롤링] HTML의 Locator로 웹스크래핑(Web Scraping) (2) | 2024.12.26 |
---|---|
[웹크롤링] 정적 웹크롤링 BeautifulSoup (0) | 2024.12.26 |
[Spark] Apache Spark 파티션과 병렬처리 구조(셔플링) (1) | 2024.12.26 |
mysql 프로덕션DB= OLTP ->redshift DW= OLAP 로 복사하기 (0) | 2024.12.26 |
[til] 숙제 apple updatesymbol_v2 incremental update 방식바꾸기 (1) | 2024.12.26 |