[1日30分 인생승리의 학습법] 웹크롤러(WebCrawler)

1. 설명
웹의 크기가 폭발적으로 증가함에 따라 인터넷에서 정보를 얻는 수단으로 검색엔진은 존재는 매우 중요한다. 검색엔진은 웹 페이지를 수집하고, 수집된 웹 페이지에 색인을 구성하여, 이를 바탕으로 검색 결과를 사용자에게 전달하는 역활을 한다. 검색엔진의 대표적인 예로 Google, Naver, Yahoo 등이 있다.
 
검색엔진의 근간이 되는 웹크롤러는 인터넷상에 존재하는 웹 문서들을 추적하여 필요한 정보를 수집하는 기술을 말하며 검색시스템, 전자상거래 상품검색, 인트라넷 검색 소프트웨어 등 현재 대부분 인터넷 산업의 근간이 되는 핵심 기술이다.
 
인터넷이 계속적으로 성장함에 따라 웹 문서의 양이 매우 거대해지면서 기존의 단일시스템 환경 기반의 웹크롤러 기술은 한계에 직면하게 되었다. 따라서 고성능의 웹크롤러 시스템을 구현하기 위해 다음과 같은 내용을 고려해야 한다.
 
  • 웹에 대한 최신 정보를 제공하기 위해 다운로드 성능을 높이는 속도문제
  • 한번 다운로드 받은 문서를 다시 다운로드 하지 않게 막도록하는 유일성 문제
  • 과거게 다운로드 받은 문서가 아직도 유효한지, 혹은 변해서 없어졌는지를 알아내는 현행화 문제
  • 크롤러배제 표준과 저작권 문제
 
웹크롤러의 기본적인 요구사항으로 문서 수집 속도가 빠른 웹크롤러가 가장 성능이 우수한 웹크롤러라고 말할 수 있다. 동일한 네트워크 환경 하에게 웹크롤러가 문서 수집을 할 경우 성능을 향상할 수 있는 방법은 웹크롤러 시스템 내의 처리 속도를 최대화시키는 방법뿐이다. 웹크롤러 시스템의 성능을 향상 시키는 방법으로 일반적으로 멀티프로세스(또는 멀티쓰레드)를 사용한다. 하지만 멀티 프로세스로 동작하는 웹크롤러 시스템에서 다수의 프로세스가 동시에 한 개의 웹서버에 문서를 요청하게 된다면 상대 시스템과 네트웍에 과부하를 발생시킬수 있다.(DDoS 공격으로 보일수 있다.) 따라서 웹크롤러는 이러한 상황을 방지하기 위해 동일한 웹 서버에는 일정 시간간격을 두고 접근하도록 통제할 필요가 있다.
 
과부하를 방지하기 위한 도 다른 방법으로 배제규약이 있다. 크롤러배제 규약은 상대 시스템에 계속적인 접근으로 인한 과부하를 주거나, 일시적인 정보, CGI 등의 적당치 않은 부분을 검색하는 것을 막아보고자 제안된 규약으로 robots.txt 파일에 규칙을 정의하게 된다. 모든 웹크롤러는 가장 먼저 웹서버에 존재하는 robots.txt 파일을 읽어와 특정 URL이 주어졌을때 URL을 통과시켜야할지 폐기해야할지 결정할수 있어야 한다.
 
 
2. 구조
웹크롤러란 검색엔진의 구축 등을 위하여 웹페이지를 수집하는 프로그램으로, 제한된 자원 내에서 짧은 시간 동안 최대한 많은 웹 페이지를 수집하는 것이 그 목표이다. 웹크롤러의 기본적인 구조는 다음과 같다.
 

경축! 아무것도 안하여 에스천사게임즈가 새로운 모습으로 재오픈 하였습니다.
어린이용이며, 설치가 필요없는 브라우저 게임입니다.
https://s1004games.com

(출저: Stanford_IR_ch20)
 
웹크롤러는 URL을 관리하기 위한 Frontier와 URL을 통해 웹문서를 Fetch하기 위한 Agent로 구분할수 있다. Frontier는 내부적으로 2개의 자료구조를 유지해야 한다. 하나는 "방문했던 URL" 목록이며 다른 하나는 "방문해야할 URL" 목록이다. 시스템이 최초 구동하며 방문해야할 URL목록에는 초기입력으로 한개 이상의 Seed URL을 가지고 있다. 그러면 Frontier에서 URL이 Agent로 전달되고 Agent는 웹문서를 Fetch해 온다. Fetch된 웹 문서에서 분문과 링크를 추출하고 본문은 색인을 위한 인덱서로 전달되고 링크는 다시 Frontier로 전달된다. Frontier로 새롭게 입력되는 URL을 방문했던 URL 목록과 비교하여 중복되지 않은 새로운 URL을 방문해야할 URL목록에 추가한다. Frontier의 방문해야할 URL목록이 존재하는 동안 위의 과정을 반복하며 웹 문서를 수집하게 된다.
 
웹크롤러의 구조는 매우 단순하며 명확하지만, 최적을 성능을 내기위해서 매우 세밀한 작업을 필요로 한다. 가장먼저 방문해야할 URL목록과 방문할 URL목록을 저장할 자료구조를 결정해야 한다. 또한 이들 자료구조는 시간이 지날수록 매우 방대해지기 때문에 메모리상에 모든 데이터를 저장할 수 없으므로, 자료구조의 일부분은 디스크상으로 내리고 일부분만 메모리에 유지하기 위한 테크닉이 필요하다. URL의 효과적인 저장과 중복검사를 위해 URL을 문자열 그대로 저장하기 보다는 64bit 해쉬함수등을 이용해 정수형의 데이터로 변환하기 위한 과정역시 필요하다. Agent에서는 DNS서버를 이용해 도메인명을 IP주소로 변환하는데 웹크롤러 시스템에서 DNS 변환은 상당한 과부하를 초래하기 때문에, 적절한 DNS캐쉬 시스템을 필요로 한다. 이 외에도 웹크롤러 시스템을 최적화 하기 위한 여지는 곳곳에 남아있으며, 웹크롤러 개발자의 노하우에 따라 같은 구조를 지니고도 웹크롤러의 성능이 달라질수 있다.

[출처] https://lyb1495.tistory.com/17

본 웹사이트는 광고를 포함하고 있습니다.
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
번호 제목 글쓴이 날짜 조회 수
1018 [초보용] Git 되돌리기( Reset, Revert ) file 졸리운_곰 2021.06.22 85
1017 [DOCKER] Windows Server 2016에서 도커 설치하기 졸리운_곰 2021.06.13 103
1016 [docker, windows server 2016] Installing Docker onto Windows Server 2016 file 졸리운_곰 2021.06.13 98
1015 [windows powershell] Setup Docker on Windows Server 2016 file 졸리운_곰 2021.06.13 147
1014 [ScreenToGif]움짤 만들기 프로그램, pc 화면을 움직이는 gif 로 캡쳐 file 졸리운_곰 2021.06.12 91
1013 [一日 30分 인생슬리의 학습법] 내가 AI 업계를 떠난 이유 5가지 file 졸리운_곰 2021.05.29 121
1012 [一日 30分 인생슬리의 학습법] 정규식 쉽게 베우기 : Learn Regex Easy Way file 졸리운_곰 2021.05.24 98
1011 [一日 30分 인생슬리의 학습법] Improving CartoonGAN 소개 file 졸리운_곰 2021.05.20 220
1010 [공통] 마크다운 markdown 작성법 file 졸리운_곰 2021.05.17 87
1009 자료구조 : JSON 구조 file 졸리운_곰 2021.05.17 113
1008 BitTorrent (토렌트) 의 원리와 구조 졸리운_곰 2021.05.14 92
1007 [1日 30分 인생 승리의 학습법] 훌륭한 개발자가 되는 방법 file 졸리운_곰 2021.04.28 94
1006 [1日30分 인생승리의 학습법] 개발자의 실수 -> 프로젝트 실패의 요인 노트 : 개발 프로젝트 실패하는 법 졸리운_곰 2021.04.28 86
1005 [1日30分 인생승리의 학습법] 검색에서 정보를 구성하는 방법 졸리운_곰 2021.04.28 81
» [1日30分 인생승리의 학습법] 웹크롤러(WebCrawler) file 졸리운_곰 2021.04.28 105
1003 [1日30分 인생승리의 학습법]프로덕션 환경에서 텐서 플로우 모델을 구축하는 방법 : gRPC로 텐서플로우 서빙 서비스 플랫폼 개발 file 졸리운_곰 2021.04.27 118
1002 [1日 30分 인생승리의 학습법] 나의 Sparx Enterprise Architect(UML) 활용기 file 졸리운_곰 2021.04.25 87
1001 [인공지능][전문가시스템][프롤로그][prolog] 어떤 컴퓨터 프로그래밍 언어를 먼저 배워야 할까? file 졸리운_곰 2021.04.23 117
1000 [WebGPU] Apache TVM을 사용하는 브라우저에서 WebGPU 기반 기계 학습 file 졸리운_곰 2021.04.17 173
999 테라폼이란? 클라우드 인프라스트럭처 자동화 도구 file 졸리운_곰 2021.03.28 124
대표 김성준 주소 : 경기 용인 분당수지 U타워 등록번호 : 142-07-27414
통신판매업 신고 : 제2012-용인수지-0185호 출판업 신고 : 수지구청 제 123호 개인정보보호최고책임자 : 김성준 sjkim70@stechstar.com
대표전화 : 010-4589-2193 [fax] 02-6280-1294 COPYRIGHT(C) stechstar.com ALL RIGHTS RESERVED