2016/10/20

웹 크롤러

Web crawler라는 프로그램이 있다.

Bot의 일종인데, 기능은 단순하다. 주어진 목록(seed)에 있는 웹페이지들을 방문, 다운로드한다. 그리고 그 페이지들에 있는 hyperlink를 타고 가서 또 그 페이지들을 다운로드 한다. 그리고 무한반복...

web crawler의 주 목적은 웹에 있는 수많은 페이지들을 주기적으로 다운로드해서 색인, 저장 함으로서 추후 이런 저런 서비스(주로 인터넷 검색)에 사용하는 것이다.

인터넷 검색을 예로 들어보자. 구글에 검색어를 입력하면 보통 1초 이내에 수백, 수천만개의 검색결과를 뱉어낸다. 실제로 방금 구글에서 "web crawler"를 검색했더니 한글 구글에서는 검색결과 약 14,600,000개 (0.58초), 영문 구글에서는 About 5,920,000 results (0.12 seconds) 라는 결과가 나왔다. 매번 유저가 검색요청을 했을 때 인터넷을 돌아다니면서 수천억개는 족히 될 법한(사실 대충 얼마나 되는지도 잘 모르겠다-_-) 웹페이지들을 모두 돌아다니면서 검색어를 매칭하는 것은 물리적으로 불가능할 뿐더러, 가능하다고 하더라도 대단히 비효율적이다.

0.12초만에 600만개에 달하는 검색 결과를 도출하려면 서버 여러대의 parallel processing 외에도 로컬에 저장된 indexing된 사이트 정보가 필수적이다. 즉, 사전에 인터넷을 꾸역꾸역 기어다니는 crawler들을 이용해서 인터넷 사이트들을 다운로드 받아서 정리해뒀다가, 검색 요청이 들어오면 다운 받아놓은 사이트(로컬 파일)들 중에서 검색하는 것이다.





robots.txt라는 파일이 있다.

인터넷을 돌아다니며 웹페이지를 자동으로 다운로드하는 web crawler라는 프로그램들을 위한 guide파일이다. 크롤러들은 이 로봇즈.txt를 먼저 열어보고, 여기서 하지 말라는 짓은 안한다. 강제성은 없지만, 사이트 오너 입장에서는 이 가이드라인을 무시하고 인덱싱하지 말라는 페이지들을 마구잡이로 긁어가면 트레픽 패턴(초당 수십회 이상 접속 한다던가...)을 분석해서 IP밴을 먹이면 되므로 님하멘허..

(16년 10월 추가) 위 글을 적을 당시(12년 2월)만 해도 네이버 블로그가 * Disallow라서 구글에서도 전혀 검색이 안됐었지만, 지금 확인해보니 업데이트가 되었다. 어쩐지 언젠가부터 네이버 블로그 글들이 구글검색에 나오더라니.. 원 글의 의도는 뇌입원이 지식즐/블로그/뉴스 등의 트레픽들을 모두 내부에서만 돌게 만들어놓아서 가두리양식 이코시스템을 구축한 것과, 크롤러들을 무차별적으로 막아버려서 '구글에서는 검색이 안되는데 뇌입원에서는 돼! 뇌입원 킹왕짱!!'하는 바보들(...)에게 "검색엔진"이라는 말도 안되는 타이틀을 얻은 것을 까려는 의도였으나 다 의미없는 일이 되었다ㅎㅎ;

No comments:

Post a Comment