6. 6.1.2 크롤링 프로세스
1. 시드 URL : 크롤링이 시작되는 사이트 목록
2. 크롤링 종료 조건 확인 : ex) 크롤링 한 페이지 개수, 수행 시간, 조건에 맞는 모든 URL 방문
3. 방문 할 다음 URL 획득 : robots.txt에 기록된 Disallow List를 참고하여 URL 큐에서
Dequeue
4. URL 컨텐츠 열기 : HTML을 파싱
5. (Optional) 관련된 컨텐츠인지 확인 : 지능형 크롤러에 사용. 일반적인 크롤러의 경우 항상 참
을 리턴
6. 컨텐츠 저장 : 관련된 컨텐츠라면 (필요한 부분을) 로컬에 저장
7. URL 추출 : Parse된 HTML에서 방문한 적이 없는 URL을 큐에 저장
8. 의도적인 지연
7. 6.1.3 지능형 크롤링과 집중 크롤링
• 배경 - 웹 전체를 크롤링 하려는 시도는 검색 엔진을 만들기 위한 색인 생성을 만드는 목적 이외에 무
의미한 일이 될 수 있고, 비용 대비 효율이 좋지 않다. 따라서 특정 도메인이나 주제에 한정된 정보를
모으는 방법이 필요해졌다.
• 근본 개념 - 관심 영역과 관련된 페이지일수록 그와 관련된 링크를 더 많이 가지고 있을 확률이 높다
는 가정
• 구현 방법 - 앞에서 언급했던 관련된 컨텐츠인지 확인하는 단계에서 지금 받아온 페이지의 관심 영역
과의 유사도를 계산하는 분류기라는 모델을 만들어, 큐에 링크 주소와 함께 앞에서 보았던 유사도 알
고리즘을 사용하여 주제와의 유사도를 같이 넣고, 새로운 URL을 받아오는 단계에서 우선 순위가 가
장 높은(유사도가 가장 높은 페이지에서 나온 URL)을 우선으로 하여 방문한다.
• 결과 - 크롤러의 효율성을 평가하는 데 일반적으로 사용되는 기준은 수집된 전체 컨텐츠 중 관심 주
제와 관련된 컨텐츠의 비율인 수집 효율인데, 관심 영역과 관련된 페이지가 링크하는 주소는 그와 관
련된 내용을 가지고 있을 확률이 높다는 점에서 수집 효율을 높일 수 있다.
• 유의사항 - 시드 URL로 경험에 의해 관심 영역에 가장 부합하는 페이지를 넣음으로써 수집 효율을
높일 수 있다.
8. 6.1.4 딥 크롤링
• 딥 크롤링은 페이지의 링크를 따라서는 갈 수 없는 페이지를 의미하는 데, 주로 AJAX를 사용하는 사
이트처럼 크롤러가 사이트를 자유롭게 돌아다닐 수 없을 때 주로 사이트맵 프로토콜을 이용하여 크
롤링 하는 방법이다.
• 사이트맵은 웹 크롤러가 수집할 수 있는 URL을 알려주는 XML 문서이다.
• 사이트맵 활용을 통해 검색 엔진 최적화를 하여 웹 페이지가 구글 검색 엔진의 상위에 위치할 수 있
다.
9. 1.continueCrawling(): 크롤링 종료 조건 확인한다.
2.getNextUrl(): 다음에 방문할 URL을 받는다.
3.getContent(url): URL의 컨텐츠를 확인한다.
4.isContentRelevant(content, this.regexpSearchPattern): 다운 받은 컨텐츠가 관
심있는 컨텐츠인지 확인한다.
5.saveContent(content, url): 컨텐츠를 저장한다.
6.extractURL(content, url): 컨텐츠를 파싱해서 URL을 추출한다.
7.addUrlsToUrlQueue(url, urlStrings): 추출된 URL을 큐에 넣는다.
8.Thread.sleep(this.delayBetweenUrls): 지연
12. URL 추출
• 하이퍼 링크 URL은 두 종류이다.
• 절대 경로 URL - /<a hrefs*=s*”http://(.)*”/ 의 regexp로 코드 상에서 절대 경로
URL 추출할 수 있다. 즉, <a href = “http://somethig.com/robots.txt” ... 에서
somethig.com/robots.txt를 추출한다.
• 상대 경로 URL - /<a hrefs*=s*”(.)*”/ 의 regexp로 코드 상에서 상대 경로 URL을 추
출할 수 있다. 이 경우 현재 URL과 상대 경로 URL을 더하는 방법으로 절대 경로 URL을 구할
수 있다.
13. 결론
• 웹 크롤러는 문서에 있는 하이퍼링크를 따라가는 과정을 통해 사이트 컨텐츠를 수집하는 프로
그램이다. 하지만 전체 웹을 크롤링 하려면 장비와 저장 장치 그리고 고속 네트워크 등 비용이
너무 크고, 전체 컨텐츠에 비해 필요한 정보가 너무 적게 되는 문제가 있다. 따라서 지능형 크
롤러를 활용하여 크롤링 URL중 우선 순위가 더 높은 페이지를 먼저 크롤링하여 관심있는 정
보를 수집하는 데 도움이 될 수 있다.
14. 사용 가능한 크롤러
• 너치 - 대용량 크롤러 자바 기반
• Mechanize - 루비 기반의 간단한 크롤러