크롤러는 다양하게 이용된다.
- 검색 엔진 인덱싱
- 크롤러의 가장 보편적인 용례다. 크롤러는 웹 페이지를 모아 검색 엔진을 위한 로컬 인덱스를 만든다.
- 웹 아카이빙
- 나중에 사용할 목적으로 장기보관하기 위해 웹에서 정보를 모으는 절차를 말한다. 많은 국립 도서관이 크롤러를 돌려 웹 사이트를 아카이빙하고 있다.
- 웹 마이닝
- 웹 마이닝을 통해 인터넷에서 유용한 지식을 도출해 낼 수 있다. 일례로, 유명 금융 기업들은 크롤러를 사용해 주주 총회 자료나 연차 보고서를 다운받아 기업의 핵심 사업 방향을 알아내기도 한다.
- 웹 모니터링
- 크롤러를 사용하면 인터넷에서 저작권이나 상표권이 침해되는 사례를 모니터링 할 수 있다.
1단계 문제 이해 및 설계 범위 확정
웹 크롤러의 기본 알고리즘은 간단하다.
- URL 집합이 입력으로 주어지면, 해당 URL들이 가리키는 모든 웹 페이지를 다운로드 한다.
- 다운받은 웹 페이지에서 URL들을 추출한다.
- 추출된 URL들을 다운로드할 URL 목록에 추가하고 위의 과정을 처음부터 반복한다.
좋은 크롤러가 필요한 속성
- 규모 확장성
- 웹은 크기 때문에 병행성을 활용하면 보다 효과적으로 웹 크롤링 할 수 있다.
- 안정성
- 크롤러는 비정상적 입력이나 환경에 잘 대응 할 수 있어야 한다.
- 예절
- 크롤러는 수집 대상 웹 사이트에 짧은 시간 동안 너무 많은 요청을 보내서는 안 된다.
- 확장성
- 새로운 형태의 콘텐츠를 지원하기 쉬어야 한다.
개략적 규모 추정
면접관과의 질문/답변을 통해서 아래와 같은 규모 추정이 되었다고 가정한다.
- 매달 10억 개의 웹 페이지를 다운로드한다.
- QPS = 10djr(1billion, 즉 1,000,000,000)/30일/24시간/3600초 = 약 400 페이지/초
- 최대(Peak) QPS = 2 X QPS = 800