개발/Node js

[Node js]웹 크롤러 만들기0-웹 크롤러란? 우리가 만들 것은?

재근이 2021. 10. 11. 14:07
반응형

🕸웹 크롤러란?

만들기 전에 무엇을 만들지 알고 가기 위해서 의미에 대해서 먼저 정리를 해보자.

흔히들 크롤러(Crawler), 스크래퍼(Scraper), 파서(Parser) 3가지에 대해서 다르게 의미 생각하고 이야기하는 경우가 있다. 사전적인 의미로만 간단히 생각해보면 무엇을 하는지 유추할 수 있다.

  • Crawl : 기어가다.
  • Scrape : 긁어내다.
  • Parse : 분석하다.

크롤러는 웹을 기어 다니는 놈, 웹 페이지를 스크래퍼는 긁어 오는 놈, 파서는 웹 페이지를 분석하는 놈을 의미 한다.

하지만 웹 크롤러는 단순히 기어 다니는 행위만 하는 프로그램을 말하는 건 아니고, 웹을 돌아다니면서 웹 페이지(html/css/js)를 긁어오고 거기에 무슨 내용들이 있는지 분석을 하는 놈을 의미한다. 스크래퍼와 파서를 포함하는 일을 하고 있어서 흔히들 헷갈려하는 것 같다.

 

🕷우리가 만들 것은?

그래서 우리는 "[돌아다니는 + 긁어오는 + 분석하는] 프로그램"을 만들 것이다.

좀 더 명확하게 설명하자면 특정 URLSeed로 시작해서 링크들을 타고 돌아다닐 것이며, 페이지에 어떤 단어들이 어느 정도 분포했는지 정리하는 프로그램이다.

특정 웹 사이트에는 어떤 정보들이 많이 들어 있는지 알 수 있는 것이 우리의 목표다. 예를 들자면 특정 사이트의 인기 검색어 순위를 만들어볼 것이다.

최종 결과물 시각화 이미지

 

🧾간단 로드맵

우리는 Node js를 이용하여 만들 것이며,

만들기 전에 어떻게 만들지 대략 적인 큰 그림을 조금 정리해보자.

  1. 우리는 먼저 특정 URLSeed(시작 위치)로 입력받는다.
  2. 해당 URLHTML을 긁어온다.
  3. 긁어온 페이지에 있는 URL들을 테이블로 수집한다.(URL중복 제거한다.)
  4. 깊이 우선 탐색 또는 넓이 우선 탐색 방법으로 "2.""3."반복한다.
  5. 시작 위치연관되지 않는다고 판단되면 더는 진행하지 않는다.
  6. 기어 다니는(크롤링) 행위를 다하고 나서 정리한 URL 테이블을 하나씩 방문해서 HTML 정보를 받아온다.
  7. 형태소 분석기를 사용해서 HTML에서 단어들을 추출하여 정리한다.

 

"탐색을 어떻게 할 건지, 어떻게 중복제거할 것인지, 어떻게 연관되지 않는지 판단할 것인지"는 구현하면서 그리고 블로그 글을 쓸면서 정할 예정이다.

그리고 여유가 된다면 크롤링하는 행위를 시각화해서 재미있는 화면을 만들어보고 싶다.

반응형