웹 로봇이란?

사람과의 상호작용 없이 연속된 웹 트랜잭션들을 자동으로 수행하는 소프트웨어 프로그램

방식에 따라 ‘크롤러’, ‘스파이더’, ‘웜’, ‘봇’ 등 각양각색의 이름으로 불림

ex) 주식시장 서버에 매 분 HTTP GET 요청을 보내고 여기서 얻은 데이터를 활용해 주가 추이 그래프를 생성하는 주식 그래프 로봇, 월드 와이드 웹의 규모와 진화에 대한 통계 정보를 수집하는 웹 통계 조사 로봇 등

크롤러와 크롤링

크롤러 : 웹페이지를 한 개 가져오고, 그 다음 그 페이지가 가리키는 모든 웹페이지를 가져오고, 다시 그 페이지들이 가리키는 모든 웹페이지를 가져오는 식으로 재귀적으로 웹을 순회하는 로봇. 스파이더라고도 부름

인터넷 검색엔진은 웹을 돌아다니면서 그들이 만나는 모든 문서를 끌어오기 위해 크롤러를 사용함

크롤러의 동작들

루트 집합이라고 하는 URL 출발 지점 제공

크롤러가 방문을 시작하는 URL들의 초기 집합을 루트 집합이라고 부른다.

루트 집합을 고를 때는 서로 겹치지 않도록 충분히 다른 장소에서 URL을 선택해야 한다.

일반적으로 좋은 루트 집합은 크고 인기 있는 웹 사이트, 새로 생성된 페이지들의 목록, 그리고 자주 링크되지 않는 페이지들의 목록으로 구성되어 있다.

대규모 크롤러 제품들은 사용자들이 루트 집합에 페이지들을 추가하는 기능을 제공하여 시간이 지남에 따라 성장할 수 있게끔 한다.

링크 추출과 상대 링크 정상화

크롤러는 웹을 돌아다니면서 꾸준히 HTML 문서를 검색하고 각 페이지 안에 들어있는 URL 링크들을 파싱해서 크롤링할 페이지들의 목록에 추가한다.

이 때 상대 링크를 절대 링크로 변환하는 작업을 한다.

순환 피하기

순환은 크롤러를 루프에 빠뜨려서 꼼짝 못하게 만들 수 있고, 이는 네트워크 대역폭을 다 차지하여 페이지를 가져오지 못하게 할 수 있다. 또한 웹 서버의 부담을 가중시키며, 문제가 되지 않더라도 많은 수의 중복된 페이지들을 가져와 쓸모없는 컨텐츠를 가져오게 한다.

로봇이 웹을 크롤링할 때 루프나 순환에 빠지지 않기 위해 반드시 그들이 어디를 방문했는지 알아야 한다.