독학/python

[파이썬] requests 모듈을 사용한 python동적크롤링 따라하기

JC story 2023. 3. 12. 23:17
반응형

안녕하세요 종백이입니다😎

 

최근에 크롤링 관련된 글을 지속적으로 작성 중인데 오늘은 그 3번째 이야기를 해보겠습니다!

이전에는 셀레니움을 이용한 동적 크롤링에 대해 이야기해 보았는데요

 

사실 셀레니움을 쓰면 크롬 드라이브를 쓰게 되는데 크롤링 행위를 계속하다 보면 크롬드라이브 쓰는데 몇몇 문제가 발생합니다.... 특히 램용량이 8G 밖에 안 되는 제 노트북에서는 그 증상이 더 악화되는데요...

 

크롬 드라이브를 써서 셀레니움 get을 할 때마다 스택이 되는지 40번 정도 하면 램사용량이 가득 차서 컴퓨터가 맛이 가버리더라고요?!

 

그래서 저가형 컴퓨터를 위한 크롤링 방식이 뭐가 있을까 하다가 requests로 동적 크롤링을 따라 하는 방법을 찾았습니다...(많은 고수분들은 이미 하고 계셨겠죠?!)

 

동적 크롤링순서

우선 시작하기 앞서 동적 크롤링이 일어나는 순서에 대해 이야기해 보겠습니다!

제가 보기에 동적 크롤링이 일어나는 방식은 크게 두 가지만 아시면 될 듯합니다.

  • 버튼을 누르면 특정 서버에 추가적인 정보를 요청해 받아와서 그 데이터를 사용하는 방식
  • HTML 내부 script 구문안에 데이터를 사용해서 자바스크립트로 동작하는 방식

위 두 가지를 파악하기 위해서는 다음과 같은 작업을 해야 합니다

  1. F12를 눌러 네트워크 창 접속
  2. 특정 버튼을 눌렀을 때 서버에 요청을 하는 xhr 유형이 있는지 확인

개발자도구 네트워크창
개발자도구 네트워크창

여기서 xhr이 있으면 아주 땡큐!입니다 ㅎㅎ

xhr을 눌러 머리글과 페이로드 정보를 이용해서 그대로 requests로 요청하면 되기 때문입니다 ㅎㅎ

 

만약 xhr이 없다!

이러면 요소창에 들어가셔서 해당 버튼을 눌렀을 때 실행되는 script문을 찾아 직접 정보를 갖고 와서 사용해야 합니다

 

예시

아래는 제가 자주 사용하는 위탁 사이트 화면인데요!

스크래핑하기 위해서 사이트를 보면 옵션에 아무것도 안 들어가 있습니다!

 

이 사이트의 동작 방식은 첫 번째 옵션을 선택해야 두 번째 옵션이 나타나는 방식인데요.

위에서 말씀드린 xhr이 없는 유형에 속합니다 (아주 귀찮게 막일작업을 하게 만들죠 ㅎㅎ)

위탁사이트 옵션 목록
위탁사이트 옵션 목록

한번 html을 보겠습니다!

html에 option에 해당하는 class나 id 등등 다 검색을 해보면 관련된 내용을 갖고 있는 script문을 찾을 수 있습니다

html속 script문
html속 script문

script문을 보면 옵션에 대한 정보가 들어가 있는 것을 확인할 수 있습니다!

 

이런 식으로 해당 정보를 사용하면 동적 크롤링 방식으로 갖고 오는 데이터를 사용할 수 있습니다 ㅎㅎ

 

정리

짧게 정리를 해보겠습니다!

requests 모듈을 이용해서 동적 크롤링 하는 방식은?!

  1. 개발자툴 네트워크 페이지에서 서버에 요청하는지 확인 후 그대로 따라 요청한다
  2. 서버 요청이 없으면 html 내부에서 원하는 곳의 정보를 담고 있는 script문을 찾아 직접 스크래핑한다!

이상입니다 ㅎㅎ

 

글 내용이 도움이 되셨다면 좋아요 부탁드립니다^^

이 글에 좋아요가 많으면 xhr에서 직접 서버 요청하는 내용도 작성해 보겠습니다 ㅎㅎ

반응형