본문으로 이동
메뉴 여닫기
환경 설정 메뉴 여닫기
개인 메뉴 여닫기
로그인하지 않음
지금 편집한다면 당신의 IP 주소가 공개될 수 있습니다.

웹 크롤러(Web Crawler)는 정해진 시작 페이지에서 출발해 페이지 안의 링크를 따라가며 웹 문서를 자동으로 방문하고 내려받아 모으는 프로그램이다. 이 일을 웹 크롤링(web crawling)이라 하고, 크롤러를 스파이더(spider), 봇(bot)이라고도 부른다.

웹에는 문서 목록이 따로 없으므로, 문서를 모으려면 이미 아는 페이지의 링크를 따라 새 페이지를 찾아 나가야 한다. 검색엔진은 크롤러로 모은 문서를 색인해 검색 결과를 만든다. 웹 아카이브, 가격 비교, 뉴스 모니터링, 인공지능 학습용 데이터 수집도 크롤러를 쓴다.

크롤링이 페이지를 찾아서 모으는 일이라면, 모은 페이지에서 상품 가격·제목 같은 특정 데이터를 뽑아내는 일은 스크레이핑이다. 실제 도구는 두 일을 함께 하는 경우가 많다.

  1. 시드(seed) URL 을 방문 대기열(프런티어, frontier)에 넣는다
  2. 대기열에서 주소를 꺼내 HTTP 요청으로 문서를 내려받는다
  3. HTML 문서를 분석해 본문을 저장하고, 문서 안의 링크를 뽑는다
  4. 이미 방문한 주소를 걸러 내고 새 주소를 대기열에 넣는다
  5. 대기열이 빌 때까지, 또는 정한 깊이·개수에 이를 때까지 2~4 를 되풀이한다

방문 순서는 너비 우선이 흔하고, 중요도나 갱신 주기에 따라 우선순위를 주기도 한다. 이미 모은 문서도 바뀔 수 있으므로 주기적으로 다시 방문한다.

지켜야 할 규칙

편집 원본 편집
  • 사이트 루트의 robots.txt 를 먼저 읽고, 수집하지 말라는 경로는 방문하지 않는다 → 로봇 배제 프로토콜
  • 한 서버에 요청을 몰아 보내지 않도록 요청 간격과 동시 연결 수를 제한한다
  • User-Agent 에 크롤러 이름을 밝혀 운영자가 알아볼 수 있게 한다
  • robots.txt 는 요청일 뿐 접근을 막는 보안 장치가 아니다. 이용 약관, 저작권, 개인정보 보호 같은 법적 제한은 따로 지켜야 한다
도구 설명
Scrapy 파이썬 웹 크롤링·스크레이핑 프레임워크
Apache Nutch 자바로 만든 대규모 오픈 소스 웹 크롤러. 하둡 위에서 동작한다
wget wget -r 로 링크를 따라 사이트를 재귀적으로 내려받는다
Selenium 브라우저를 직접 조작해 자바스크립트로 그려지는 페이지를 수집할 때 쓴다