
9장. 웹 크롤러 설계
- 웹 크롤러
- robot, spider
- 검색 엔진에서 널리 쓰는 기술
- 웹에 새로 올라오거나 갱신된 콘텐츠를 찾아내는 것이 주된 목적
- 몇 개 웹 페이지에서 시작해서 링크를 따라 나가면서 새로운 콘텐츠를 수집
- 크롤러 이용
- 검색 엔진 인덱싱
- 검색 엔진을 위한 local index 생성
- ex.
Googlebot: 구글 검색 엔진이 사용하는 웹 크롤러
- 웹 아카이빙 web archiving
- 나중에 사용할 목적으로 장기보관하기 위해 웹에서 정보를 모으는 절차
- ex. 미국 국회 도서관, EU 웹 아카이브
- web mining
- 웹의 폭발적 성장세 =
data mining 업계에 굳
- 인터넷에 유용한 지식을 도출 가능
- ex. 기업의 핵심 사업 방향 알아내기
- web monitoring
- 인터넷에서 저작권이나 상표권이 침해되는 사례 모니터링
- ex.
Digimarc(디지마크): 웹 크롤러를 통해 해적판 저작물을 찾아내서 보고
1. 1단계 문제 이해 및 설계 범위 확정
웹 크롤러의 기본 알고리즘
- URL 집합이 입력으로 주어지면, 해당 URL들이 가리키는 모든 웹 페이지를 다운로드
- 다운받은 웹 페이지에서 URL들을 추출
- 추출된 URL들을 다운로드할 URL 목록에 추가하고 위의 과정을 반복
웹 크롤러 설계 요구 사항 분석
- 크롤러의 주된 용도는? 검색 엔진 인덱스 생성용? 데이터 마이닝? 이 외 다른 용도?
→ 검색 엔진 인덱싱
- 매달 얼마나 많은 웹 페이지를 수집?
→ 10억 개
- 새로 만들어진 웹 페이지나 수정된 웹 페이지도 고려?
→ yes
- 수집한 웹 페이지 저장 필요?
→ 5년간
- 중복된 콘텐츠는 어떻게?
→ 무시
좋은 웹 크롤러가 만족해야하는 속성
- 규모 확장성
- 수십업 개의 페이지가 존재
- 병행성(parallelism)을 활용하면 보다 효과적으로 웹 크롤링 가능
- 안정성
robustness
- 웹은 함정으로 가득
- ex. 잘못 작성된 HTML, 아무 반응이 없는 서버, 악성 코드가 붙어 있는 링크
- 이런 비정상적 입력이나 환경에 잘 대응할 수 있어야 함.
- 예절
politeness
- 수집 대상 웹 사이트에 짧은 시간동안 너무 많은 요청을 보내면 X
- 확장성
extensibility
- 새로운 형태의 콘텐츠를 지원하기 쉬워야 함
- ex. 이미지 파일도 크롤링하고 싶다고 할 때 전체 시스템을 새로 설계해야 한다면 곤란.
개략적 규모 추정
- 매달 10억 개의 웹 페이지 다운로드
- QPS = 10억 / 30일 / 24시간 / 3600초 := 400페이지 / 초
- 최대 Peak QPS = 2 * QPS = 800
- 웹 페이지 평균 크기 500k라고 가정
- 10억 페이지 x 500k = 500TB/월
- 1개월치 데이터 보관 500TB → 5년간 보관 500TB 12개월 5년 = 30PB
2. 2단계 개략적 설계안 제시 및 동의 구하기

시작 URL 집합
- 웹 크롤러가 크롤링을 시작하는 출발점
- 크롤러가 가능한 한 많은 링크를 탐색할 수 있도록 하는 URL을 고르는 것이 바람직
- 방법1. 전체 URL 공간을 작은 부분집합으로 나누는 전략을 사용
- 방법2. 주제별로 다른 시작 URL을 사용 (주제별로 세분화, 각각에 다른 시작 URL을 사용)
미수집 URL 저장소
- 크롤링 상태
- 다운로드할 URL
- 다운로드된 URL
- 미수집 URL 저장소(
URL frontier) = 다운로드할 URL을 저장 관리하는 컴포넌트
- FIFO Queue
HTML 다운로더
- 인터넷에서 웹 페이지를 다운로드하는 컴포넌트
- 다운로드할 페이지의 URL은 미수집 URL 저장소가 제공
도메인 이름 변환기
- 웹 페이지를 다운받으려면 URL을 IP주소로 변환하는 절차가 필요
- HTML 다운로더는 도메인 이름 변환기 사용해서 IP 주소 알아냄
콘텐츠 파서
- 웹 페이지를 다운로드하면 parsing과 validation 절차가 필요
- 이상한 웹 페이지는 문제를 일으킬 수 있고 저장 공간만 낭비하게 되기 때문
- 크롤링 서버 내에 콘텐츠 파서를 구현하면 크롤링 과정이 느려짐
→ 독립된 컴포넌트 생성
중복 콘텐츠인가?
3. 3단계 상세 설계
4. 4단계 마무리