시리즈물/데이터 수집을 위한 크롤링

[크롤링] 데이터 수집을 위한 크롤링 1편 : 크롤링이란 무엇인가?

포도알77 2019. 3. 2. 08:58
최근 블로그의 유입 로그를 봤더니 생각보다 많은 사람들이 크롤링으로 내 블로그를 들어온다는 사실을 알았다. [Java] Jsoup을 이용한 간단한 웹 크롤러 만들기, 사실 이 글은 워드프레스로 오기 전에 쓴 글로 대학원에서 심심풀이로 썼던 기억이 난다. 블로그에 새글도 없기에 한번 크롤링을 간단하게 다루어서 글을 써보려고한다.  
 데이터 수집을 위한 크롤링 연속 포스팅 

[크롤링] 데이터 수집을 위한 크롤링 1편 : 크롤링이란 무엇인가?

[크롤링] 데이터 수집을 위한 크롤링 2편 : 크롤링에 필요한 필수 요소들

[크롤링] 데이터 수집을 위한 크롤링 3편 : JSON, 더 자세한 설명

[크롤링] 데이터 수집을 위한 크롤링 4편 : Java의 설치와 간단한 Jsoup 예제

[크롤링] 데이터 수집을 위한 크롤링 5편 : Yahoo 파이낸스를 이용한 환율 크롤링

1. 크롤링이란?

크롤링(Crawling)이란 사전적으로 기어다니는 것을 뜻하는데, 전산쪽에서는 Web상을 돌아다니면서 정보를 수집하는 행위를 뜻한다. 아마 web에서 그 의미가 파생된 듯 하다. 아무튼 크롤링, 스크래핑(Scraping) 또는 데이터 긁기등 다양한 단어로 불리우며 정확히 뭐가 맞는지는 나도 모른다. 다만 크롤링이 입에 붙어서 크롤링으로 부를 뿐이다.(학교에선 이런 것좀 가르쳐주지 쓸데없는 프로그래밍 언어 교육말고)   





Icon made from Icon Fonts is licensed by CC BY 3.0
 

 2. 크롤링 대상

앞서 언급된 크롤링에 정의에 따라, 크롤링의 대상은 웹 상의 자원들이다. 이 자원은 정적인 문서가 될 수도 있고, API와 같은 서비스가 될 수도 있다. 다만 어느쪽이던 다수의 데이터를 수집하고, 여기서 필요한 정보만 추출해서 처리하는 것을 우리는 크롤링이라고 부를뿐이다.   예를 들어 구글과 같은 검색엔진에서는 웹 사이트의 정적인 데이터를 긁어다가 필요한 정보를 추출해서 검색 인덱스를 생성하고, 가격 정보 비교 사이트는 상품과 가격정보등을 긁어다가 서로 다른 쇼핑몰의 가격을 알려주기도 한다. 크롤러는 사실 그렇게 엄청난 것이 아니며, 필요에 따라 누구든지 제작할 수 있다.   물론 정보 수집 대상이 웹이 아닌 경우가 있지만, 이 경우에는 다른 이름으로 불리우는 경우가 많고 크롤러 정의상 범주 밖에 있으니 넘어가도록 하자.  

3. 크롤링 툴, 라이브러리

사실 어떤 툴이든 라이브러리를 사용하든 정보를 수집한다는 것은 변함이 없다. 다만 자신의 필요에 맞게 사용하면 된다. 가장 일반적으로 호스트 프로그램을 통해서 데이터를 수집할 수 있는 라이브러리에는 Beautiful soup, 자바 버전인 JSoup, 브라우저를 이용한 Selenium 등이 있다.  

 딱히 보여줄 이미지가 없다.

 

4. 크롤링 메커니즘

크롤링 매커니즘은 대략적으로 아래의 단계를 통해서 진행된다. (1) 대상 선정 -> (2) 데이터 로드 -> (3) 데이터 분석 -> (4) 데이터 수집

 (1) 크롤링 대상 선정 (API 또는 웹 문서)

   웹 상의 데이터는 고유한 ID를 가진다. URI라고 부르며, 이는 우리가 잘 하는 웹 사이트 주소인 URL과 URN이 있다.

 간단하게 과일에 대한 네이버 검색 결과를 크롤링하려면 "https://search.naver.com/search.naver?query=사과", "https://search.naver.com/search.naver?query=배"의 URL을 선정하는 과정이다.




네이버 사과 검색시 화면

 (2) 데이터 로드 

  데이터 로드는 웹 사이트를 켜는것과 같다. 만약 API라면 XML, JSON 문서가 될 것이고, 웹 페이지라면 HTML 문서를 다운로드 받는 것이다.

 (3) 데이터 분석

  로드된 데이터에서 필요한 부분을 뽑아내는 것을 뜻한다. 당연하게도 웹 사이트상에는 내가 필요로하지 않는 부분이 많다.

 어떠한 부분을 수집할지, 어떤 부분을 수집하지 않을지 선정하는 과정이다.





어떠한 광고 요청도 받지않았다. 단지 검색됐을 뿐..

 (4) 수집

 데이터 분석 과정을 통해서 수집할 내용을 선정했다면, 이를 추출하여 파일 또는 데이터를 메모리상에 저장하는 과정이다.

    다음 포스트부터는 Jsoup을 이용하여, 데이터를 수집하는 절차들을 다뤄볼 예정이다.  


페이스북으로 공유카카오톡으로 공유카카오스토리로 공유트위터로 공유URL 복사