집중형 웹 크롤러란?
집중형 웹 크롤러(focused web crawler)는 미리 정해진 특정 주제 집합이 규정하는 비교적 좁은 웹 영역의 페이지만을 조사하고, 수집하고, 색인하며, 관리하는 하이퍼텍스트 시스템입니다. 처리 대상이 상대적으로 적기 때문에 하드웨어와 웹 자원에 드는 투자는 매우 적으면서도, 빠른 속도로 준수한 수준의 페이지 커버리지를 달성할 수 있다는 것이 가장 큰 강점입니다.
핵심 구성 요소: 분류기와 증류기
집중형 웹 크롤러는 두 가지 핵심 모듈에 의해 구동됩니다. 첫 번째는 분류기(classifier)로, 주제 분류 체계(topic taxonomy)에 포함된 예시 데이터로부터 관련성을 판별하는 방법을 학습합니다. 두 번째는 증류기(distiller)로, 인터넷 전역에서 해당 주제와 관련된 핵심 거점(topical vantage points), 즉 권위 있는 허브 페이지를 식별하는 역할을 담당합니다.
작동 방식
집중형 웹 크롤러는 수직 검색 엔진(vertical search engine)을 활용해 목표 주제에 특화된 웹 페이지를 크롤링합니다. 가져온 각 페이지는 사전에 정의된 목표 주제 중 하나 이상으로 분류됩니다. 분류 결과 해당 페이지가 목표 주제에 부합한다고 예측되면, 페이지 내부의 링크를 추출하여 URL 대기열(queue)에 추가합니다. 반대로 주제에서 벗어난 것으로 판단되면, 그 페이지에서부터는 크롤링을 더 이상 진행하지 않습니다.
'풀페이지' 분류 방식
이처럼 페이지 전체 내용을 기준으로 분류를 수행하는 집중형 웹 크롤러를 '풀페이지(full-page)' 집중형 웹 크롤러라고 부릅니다. 다시 말해, 페이지에 담긴 모든 링크의 문맥(context)은 곧 그 페이지의 전체 본문 내용 자체가 됩니다.
집중형 크롤링의 장점
이러한 크롤링 방식은 색인 과정을 한층 효율적으로 만들어 주며, 방대한 월드 와이드 웹 저장소로부터 더 빠르고 관련성 높은 데이터를 검색한다는 근본적인 요구 사항 달성에 직접적인 도움을 줍니다. 실제로 여러 검색 엔진이 이 방식을 도입해 사용자에게 더 풍부한 검색 경험을 제공하는 동시에, 웹 콘텐츠 제작과 조회수 증가라는 성과도 함께 얻고 있습니다.
크롤러 매니저(Crawler Manager)
크롤러 매니저는 하이퍼텍스트 분석기(Hypertext Analyzer) 다음으로 중요한 시스템 구성 요소입니다. 이 모듈은 전 세계 웹에서 파일을 내려받는 역할을 수행하며, URL 저장소에 보관된 URL들을 회수하여 크롤러 매니저의 버퍼에 적재합니다.
URL 버퍼와 우선순위 큐
URL 버퍼는 우선순위 큐(priority queue) 형태로 동작합니다. 크롤러 매니저는 URL 버퍼의 크기에 따라 파일을 내려받을 크롤러 인스턴스를 동적으로 생성합니다. 효율을 더욱 높이기 위해 크롤러 풀(crawler pool)을 구성해 운영하기도 합니다. 아울러 매니저는 크롤러들의 작업 속도를 제한하고 부하를 균형 있게 분배하는 책임도 지며, 이러한 조율 작업은 크롤러들을 지속적으로 감시함으로써 이루어집니다.
멀티스레드 크롤러의 구조
개별 크롤러는 멀티스레드(multi-thread) 방식의 Java 코드로 작성되어 있으며, 인터넷에서 웹 페이지를 내려받아 문서 저장소(document repository)에 저장하는 데 적합합니다. 각 크롤러는 자신만의 큐를 가지고 있으며, 이 큐는 앞으로 크롤링할 URL 목록을 관리합니다. 크롤러는 이 큐에서 URL을 하나씩 꺼내 처리합니다.
서버 과부하 문제와 조율
서로 다른 크롤러들이 동일한 서버에 요청을 보내는 상황이 발생할 수 있습니다. 이렇게 같은 서버로 요청이 집중되면 서버에 과부하가 걸리게 됩니다. 서버는 요청을 공유한 여러 크롤러의 요청을 처리하는 데 분주해지고, 응답을 기다리는 동안 전체 크롤링 효율이 떨어질 수 있습니다. 이러한 이유로 크롤러 매니저를 통한 요청 속도 조절과 부하 분산이 필수적입니다.