Computer >> 컴퓨터 >  >> 프로그래밍 >> 프로그래밍

포커스드 웹 크롤러(Focused Web Crawler)의 주요 구성 요소

포커스드 웹 크롤러(focused web crawler)는 특정 주제나 키워드에 집중하여 웹 페이지를 선별적으로 수집하는 시스템으로, 여러 핵심 구성 요소들이 유기적으로 협력하여 동작합니다. 이번 글에서는 포커스드 웹 크롤러를 이루는 주요 구성 요소와 각각의 역할을 자세히 살펴보겠습니다.

1. 시드 탐지기(Seed Detector)

시드 탐지기는 특정 키워드에 대한 시드(seed) URL을 결정하는 역할을 담당합니다. 처음 n개의 URL을 가져와 시드 페이지를 식별한 후, PageRank 알고리즘, HITS 알고리즘 또는 이와 유사한 알고리즘을 기반으로 각 페이지에 우선순위를 부여합니다.

2. 크롤러 관리자(Crawler Manager)

크롤러 관리자는 하이퍼텍스트 분석기 다음으로 중요한 시스템 구성 요소로, 전 세계 웹에서 파일을 실제로 내려받는 작업을 총괄합니다. URL 저장소(URL Repository)에 있는 URL들을 가져와 크롤러 관리자 내부의 버퍼에 저장합니다.

URL 버퍼는 우선순위 큐(priority queue) 형태로 구성되며, 크롤러 관리자는 버퍼의 크기에 따라 파일을 다운로드할 크롤러 인스턴스를 동적으로 생성합니다.

효율성을 극대화하기 위해 크롤러 관리자는 크롤러 풀(crawler pool)을 운영할 수도 있습니다. 또한 크롤러들을 지속적으로 감시하면서 크롤링 속도를 제한하고, 크롤러 간의 부하를 균형 있게 분산시키는 역할도 수행합니다.

3. 크롤러(Crawler)

크롤러는 멀티스레드(multi-thread) 방식으로 구현된 프로그램으로, 웹에서 웹 페이지를 다운로드하여 문서 저장소(document repository)에 파일을 저장합니다. 각 크롤러는 자체적인 큐를 보유하고 있으며, 이 큐에는 크롤링해야 할 URL 목록이 담겨 있습니다. 크롤러는 순차적으로 큐에서 URL을 꺼내 처리합니다.

여러 크롤러가 동일한 서버에 요청을 보낼 경우 서버에 과부하가 걸릴 수 있습니다. 이를 방지하기 위해 서버는 동기화(synchronized) 방식으로 동작하며, 해당 URL에 대한 요청이 이전에 접수된 적이 없을 때만 HTTP 구조로 요청을 전달합니다. 덕분에 크롤러가 특정 서버에 과도한 부하를 주는 상황을 예방할 수 있습니다.

4. 링크 추출기(Link Extractor)

링크 추출기는 문서 저장소에 저장된 파일들로부터 링크(link)를 추출하는 구성 요소입니다. 먼저 추출된 URL이 이미 가져온 URL 목록에 존재하는지 확인하고, 새로운 URL이라면 하이퍼링크 앞뒤의 주변 텍스트와 해당 링크가 속한 제목 또는 소제목 정보를 함께 추출합니다.

5. 하이퍼텍스트 분석기(Hypertext Analyzer)

하이퍼텍스트 분석기는 링크 추출기로부터 전달받은 키워드를 바탕으로, 분류 체계(Taxonomy Hierarchy)를 기준으로 검색 키워드와의 관련성(relevancy)을 판단합니다. 이 과정을 통해 주제와 관련 있는 페이지만 선별적으로 수집될 수 있습니다.

6. HTTP 프로토콜 모듈(HTTP Protocol Module)

HTTP 프로토콜 모듈은 큐에서 승인된 URL에 해당하는 파일을 요청하는 역할을 합니다. 문서를 성공적으로 수신하면, 다운로드된 문서의 URL이 타임스탬프(timestamp)와 함께 '가져온 URL' 목록에 기록되고, 문서 자체는 문서 저장소에 저장됩니다.

마무리

이처럼 포커스드 웹 크롤러는 시드 탐지기, 크롤러 관리자, 크롤러, 링크 추출기, 하이퍼텍스트 분석기, HTTP 프로토콜 모듈 등 여섯 가지 구성 요소가 유기적으로 연동되며 동작합니다. 각 구성 요소가 명확한 역할을 분담함으로써, 불필요한 리소스 낭비를 줄이고 특정 주제에 최적화된 고품질 데이터 수집이 가능해집니다.