민프

[Python] 크롤링이란 무엇일까? 본문

[Python]

[Python] 크롤링이란 무엇일까?

민프야 2023. 8. 1. 16:41

크롤링이란? 

https://dict.naver.com/search.dict?dicQuery=Crawling&query=Crawling&target=dic&ie=utf8&query_utf=&isOnlyViewEE= 

 

'Crawling' : 네이버 사전 검색결과

33종 언어사전과 방대한 지식백과를 제공

dict.naver.com

위 사전에서는 기어다가, 가다의 뜻이 있는데

이러한 뜻으로 보아 하나하나 뭔가를 기어다니면서 찾아보는건가? 라는 것을 유추해볼 수 있었다.

 

그럼 IT용어사전에서의 크롤링은 뭘까?

https://terms.naver.com/entry.naver?docId=6470952&cid=42346&categoryId=42346 

 

크롤링

웹사이트(website), 하이퍼링크(hyperlink), 데이터(data), 정보 자원을 자동화된 방법으로 수집, 분류, 저장하는 것. 크롤링을 위해 개발된 소프트웨어를 크롤러(crawler)라 한다. 크롤러는 주어진 인터넷

terms.naver.com

웹사이트(website), 하이퍼링크(hyperlink), 데이터(data), 정보 자원을 자동화된 방법으로 수집, 분류, 저장하는 것.

이라고 나와있다.

 

음 그러니깐 크롤링이란

웹사이트에서 자동화된 방법으로 뭔가가 기어다니면서 수집, 분류를 하는거라고 사전 정의를 해놓고

어떠한 방식으로 크롤링이 되는지 알아보자

 

크롤링의 원리를 알기전에 웹페이지의 구성을 알아야 한다.

웹페이지는 HTML 문서로 작성되어 있다. 그리고 CSS를 참조하여 디자인을 활용할 수 있으며 자바스크립트(JavaScript)까지 참조하면 상호작용이 가능해진다. 

 

HTML은 트리구조로 이루어져있는데

그 트리구조안에는 아래 사진과 같이 HTML 관련 태그들로 이루어져있다.

크롤러를 만들 때 위 사진에서와 같이 내가 원하는 태그를 찾아서 데이터를 추출할 수 있다.

 

이 크롤링은

정적크롤링동적크롤링으로 나뉘게 되는데

 

정적크롤링

한 폐이지 안에서 원하는 정보가 모드 드러날 때 정적 데이터라고 할 수 있다. 즉 정적 크롤링은 주소를 통해 단발적으로 접근하여 한 페이지 내에서 모든 작업이 이루어지기 때문에 속도가 매우 빠르다는 장점이 있지만, 수집 데이터의 한계가 존재한다는 단점이 있고,

 

동적크롤링
입력, 클릭, 로그인 등과 같이 페이지 이동이 있어야 보이는 데이터를 의미한다.

예를 들어서, 메일함에 있는 메일 제목 데이터를 수집할 때 로그인 과정을 거친 후 메일함에 들어가야 하는 동적인 과정이 필요하다. 이런 경우가 동적인 크롤링이다. 동적인 크롤링은 브라우저를 사용하여 연속적으로 접근하여 수집 데이터의 한계가 없지만, 속도가 느리다는 단점이 있다

 

Python에서 정적크롤링, 동적크롤링을 사용할 수 있도록 하는 라이브러리는 다음과 같다.

정적크롤링 : requests / urllib / beautifulsoup

동적크롤링 : chromedriver / Selenium

 

적절하게 어떤 크롤링 방식을 사용할지 정해서 사용하면 될 것 같다.

Comments