SlideShare a Scribd company logo
1 of 36
• 날짜 : 2018-01-24
• 검색엔진팀 / 왕인영(wangin6@gmail.com)
웹 수집기(Web Crawler, 웹스파이더, 웹로봇)
 웹으로부터 페이지를 자동으로 수집하는 소프트웨어
 색인과 탐색에 사용됨
데이터의 최신 상태 유지를 위해서 웹 크롤링을 함
:웹 크롤러는 방문한 사이트의 모든 페이지의 복사본 생성
생성된 페이지를 보다 빠른 검색을 위해서 인덱싱 함
대표적인 예시) 검색엔진
* 메타태그란 :
하이퍼텍스트 생성 언어 HTML 문서의 맨 위쪽에 위치하는 태그(tag)로
브라우저와 검색 엔진을 사용할 수 있도록 웹 문서의 정보를 포함함
즉, 메타태그는 웹 페이지의 요약
General Web Search
일반적인 검색엔진(e.g. NAVER, Google)
Vertical Crawling
특정 영역만을 다루는 검색엔진(e.g. Amazon, 뉴스 수집기)
Topical Crawling
특정 주제와 관련된 문서만을 다루는 focused crawlers(e.g. 여행 후기 수집기)
Web Characterization
웹 사이트들에 대한 통계 추출(효과적인 검색 엔진을 만들기 위한 사전 조사)
Mirroring
웹 사이트 복제(서버를 분산시켜 성능 향상)
Web Site Analysis
그 외에 여러 분석 작업(e.g. “broken links” 조사, Wikipedia 문서 분류)
- 대규모 검색엔진에 의해 이루어지는 형태
- 구글이나 네이버
웹의 특정 부분 집합에 중점을 둠
특정 사용자의 필요를 위한 내용을 제공할 수 있기 위함
General Web Search
일반적인 검색엔진
Vertical Crawling
특정 영역만을 다루는 검색엔진
가게 봇 스팸 봇
주어진 주제에 정합하는 페이지로 수집기를 제약시켜
필요 이상의 페이지를 수집하는 것을 피한다.
주제 관련 페이지를 주기적으로 수집하거나 ,
주문(on-demand) 방식 : 사용자 질의를 통해서 페이지를 모음
 웹 특성 평가를 위해서 사용됨.
 효과적인 웹 검색엔진을 구축하기 위한 전제 조건.
 특성 평가에서는 수집을 위한 시작 URL의 선택이 매우 결정.
Topical Crawling
특정 주제와 관련된 문서만을 다루는
focused crawlers
Web Characterization
웹 사이트들에 대한 통계 추출
(효과적인 검색 엔진을 만들기 위한 사전 조사)
웹 사이트의 일부나 전체를 보존하는 행위이다.
의도 : 서버의 부하를 분산하고 다른 네트워크의 사용자에게
빠른 접근을 제공하는 것.
웹 수집기는 웹 사이트를 분석하는 데 쓰일 수 있다.
링크 유효성 검사(link validation)
: 존재하지 않는 페이지에 대한 '끊어진 링크(broken link)'를 찾기 위해
페이지를 자동으로 스캔하는 것. E.g. Wikipedia 문서 분류
Mirroring
웹 사이트 복제(서버를 분산시켜 성능 향상)
Web Site Analysis
그 외에 여러 분석 작업
코드 유효성 검사(code validation)
: 각기 쓰여진 언어에 따라 페이지와 스타일 시트, 스크립트 등이 유효한지
확인하는 것.
 신선도(freshness) 최신의 문서가 중요
 품질(quality) 문서의 질이 주요
 용량(volume) 문서의 양이 중요
웹 페이지의 형태
• Private/Public: 사용자 인증의 유무
• Static/Dynamic: 서버가 동적으로 페이지를 생성하는가?
사적 웹 - 비밀번호로 보호되는 페이지. 인트라넷의 경우가 해당.
이런 페이지는 색인화되지 않고 수집기가 볼 수 없음.
공용 웹 – 웹 수집기가 색인으로 만들 수 있는 부분.
정적 페이지 - 웹에 존재하는 페이지.
동적 페이지 - '숨겨진 웹(hidden web)' , 웹 서버에 요청이 오기 전에는 존재하지 않는 페이지
e.g.회사 인트라넷
e.g.네이버블로그 e.g.검색 결과 페이지
• Scheduler: 프론티어(frontier)로도 알려져 있는 방문할 페이지들의 URL 큐 관리
• Downloader: 각 URL의 내용 검색해서 구문 분석 후 저장소 모듈로 보냄
• Storage: 문서 저장, indexing, metadata 제공
 Master(Frontier) : 서버역할, Agent가 수집한 URL을 전송받아 관리하고 필터링된 URL을 다시 Agent로 분배
 Slave(Agent) : Frontier로부터 URL을 전송받아 해당 URL의 웹페이지(HTML)를 처리. 다른 웹페이지에 대한 URL link와
이미지 등의 리소스 URL link를 추출하고 모든 URL 링크는 Frontier로 전송
 Monitor : Frontier와 Agent의 동작상태 모니터링 하고 제어기능을 포함
master/slave 모델
세가지 컴포넌트로 구성
: Master(Frontier), Slave(Agent), Monitor.
웹 크롤러의 기본 구성
**프론티어(frontier)에 대한 보충설명
<스케줄링과 저장소 세분화>
장기 스케줄링(Long-term Scheduler)
품질과 신선도 평가에 따라 다음 방문할 페이지를 결정.
시간 간격 : 몇 시간 혹은 며칠
단기 스케줄링(Short-term Scheduler)
공손도 정책 혹은 네트워크 사용 최적화에 따라 페이지를 재배정. 시간간격 : 몇 초나 몇 분
(서식 있는) 텍스트
※ 한 페이지를 가져온 뒤 일 정 시간을 기다림 (politeness policy)
12.4.2 수집기의 구현에서 나타나는 실직적 쟁점
 DNS(Domain Name System) 서버의 일시 장애
 많은 URL이 같은 문서를 가리킴
 Parsing Error: 많은 웹 페이지가 HTML 문법에 맞지 않음
 Soft-404 Pages: 서버들이 404 응답 코드를 보내지 않고 custom-built error page를 반환함
 Duplicates: 웹의 30%가 중복된 문서
DNS는 일시적 DNS 고장과 기형 또는 DNS 기록 오류 등으로 인해서 DNS 해석의 효율성 문제가 있다
DNS 캐싱 : 더 자주 해석되는 도메인 이름의 IP 주소를 저장.
DNS 해석(DNS Resolution)
URL 정규화(URL Canonization)
 DNS(Domain Name System) 서버의 일시 장애
 많은 URL이 같은 문서를 가리킴
*슁글링(shingling)
- 문서를 정해진 윈도우 사이즈의 슁글(shingle)로 표현하고, 이것을 이용하여 문서의 변경도를 측정.
- 0~1 사이의 값으로 표현.
문서를 정해진 크기의 토큰으로 자른 슁글을 이용하여 표현하고, 이것을 통하여 중복 문서를 찾아낸다.
• 웹은 동일한 내용을 가리키는 많은 양의 URL을 지니고 있음.
• 슁글링(shingling)을 통해 간단한 문법 규칙의 집합을 URL에
적용해서 중복 내려받기를 피할 수 있다.
-소프트(Soft)-404 페이지
 Soft-404 Pages: 서버들이 404 응답 코드를 보내지
않고 custom-built error page를 반환함
 Parsing Error: 많은 웹 페이지가 HTML 문법에 맞지
않음
- 구문 분석(Parsing)
• 많은 웹 페이지들이 HTML 언어의 사양을 충실히 지키지
않고 형편없는 코드로 작성되있음.
• 웹 브라우저는 잘못 코딩이 되어있더라도 HTML이 보이게
하도록 설계되어있기 때문.
• HTML 구문 분석할 때 코딩의 오류를 허용해야함.
** 구문 분석을 해야하는 이유 : 정보 추출
문제 해결 방안
• URL을 요청하고 제대로 된 응답 코드를 받게되면 그 때
검증
• 텍스트 분류기를 통해 이런 페이지가 표현하는 메시지
와 연관된 특정 구나 키워드를 학습하여 자동으로 인지
-중복(Duplicates)
 Duplicates: 웹의 30%가 중복된 문서
고의적/비고의적 복제
- 비고의적인 복제의 원인 : URL의 식별자
식별자는 세션을 탐지하기 위해 사용되는데 이 세션 아이디 때문에 한 사이트에서만 여러 사람의 세션값이
존재할 수 있어 무한한 수의 URL이 발견될 수 있다. 네트워크 자원이 낭비될 수 있음.
12.4.3 병렬 수집(Parallel Crawling)
확장성(scalability)과 장애 복구(fault tolerance)를 위해 multithreading과 분산 컴퓨팅이 필요
• 다중 스레드 사용하는 이유 :
수집기가 사용 가능한 대역폭이 일반적으로 개별 웹 사이트의 대역폭보다 훨씬 크기 때문.
-> 수집기가 각 개별 내려받기 스레드가 끝나기를 기다리기 전에 다음 페이지를 요청해야 함을 의미.
• 분산환경에서 수집기를 실행할 때 가장 중요한 것 :
동일 페이지를 중복해서 내려받는 것을 피해 웹 서버에 과부하를 주지 말아야 한다는 것.
통신 오버헤드를 최소화해야 한다는 것을 목표로함.
12.4.3 병렬 수집(Parallel Crawling)
• 분산수집시스템
새로운 URL 발견할 때 어떤 프로세스가 주어진 URL을 내려받아야 하는지 결정해야함
–> 할당함수(assignment function)
한 웹 사이트 대부분의 링크가 동일 사이트의 페이지라는 것 알기 위해서 동일 호스트 페이지를
할당 함수가 한 프로세스에 할당해야함.
-> 해싱 함수 이용해서 호스트 이름을 프로세스 색인에 해당하는 번호로 전환
할당함수의 특성
균형 특성 (각 수집 프로세스는 같은 수의 호스트 가져야 함)
반-가변성 특성(수집 프로세스 수가 증가하면 각 프로세스에 할당된 호스트 수 줄여야 함)
수집 프로세스 동적으로 추가/제거 가능
-> 일관 해싱(consistent hashing) 사용.
웹서버의 갯수가 변동할 때 요청을 분산하는 방법
HashRing에 k 개의 노드가 있는 상황에서, 노드가 사라지거나 추가될 때 1/k 정도의
key에 대한 것만 유실이 되고 나머지 key는 변동 없이 그 위치에 존재한다는 것
같은 값으로 노드들이 만들어지면 그 순서도 항상 동일
12.4.3 병렬 수집(Parallel Crawling)
* 일관된 해싱(Consistent hashing)
* 일반적인 해싱 방법 * Consistent Hashing의 작동 방식
cache machine은 구간을 정함.
그 구간에는 많은 Object의 해시값을 가지고 있음.
기존의 cache machine이 제거되면, 인접한 구간의 남아있는 cache machine이
제거된 구간을 맡게됨.
12.4.3 병렬 수집(Parallel Crawling)
* 일관된 해싱(Consistent hashing)
웹은 동적이기 때문에 매일 많은 양의 페이지가 추가되고 바뀌고 제거된다.
웹 수집기는 항상 새로운 페이지를 업데이트하기를 원한다. 항상 새로운 페이지를 찾고자 하며
변화를 감지하기 위해서 방문했던 페이지들을 다시 방문해야 한다.
- 선택 정책 (질적으로 가장 좋은 페이지를 첫 번째로 방문하는 목적)
- 재방문 정책 (페이지가 변경될 때 색인을 수정하는 목적)
- 공손도 정책 (웹 사이트에 과부하가 걸리지 않게 하는 목적)
Crawler는 다음과 같은 trade-off 관계에 있는 목적들을 극대화하기 위해 scheduling을 잘 해야함
1. 웹 페이지를 재방문하여 변화를 감지해야한다.
2. 새로운 웹 페이지를 찾아낼 수 있어야 한다.
3. Network bandwidth를 효율적으로 사용해야한다. (쓸 모 없는 웹 페이지는 다운로드하지 않음)
12.5.1. 선택정책 (Selection Policy)
• Crawler는 다음에 방문할 페이지들을 신중히 선택해야함
• Selection policy는 쓸데 없는 페이지를 다운로드 하는데 network bandwidth를 낭비하는 것을 막아줌
• Selection policy는 다음과 같이 두 가지 타입으로 나뉜다
1. 오프라인제한(Off-line Limits): Crawling 시작 전에 최대 저장할 페이지 양을 제한함
2. 온라인 선택(On-line Selection): Crawling을 진행하며 어떤페이지를 먼저 방문할지 정하는 것
• 저장소 용량의 한계로 인해, crawling 시작 전에 최대 저장할 페이지들의 양을 정할 필요가 있다.
• 자주 사용되는 off-line limits:
‣ 웹 사이트 수의 제한
‣ 최대 링크 depth 제한 (링크를 몇 번까지 타고 들어갈지)
‣ 최대 저장 페이지 수 제한
‣ 웹 사이트 당 최대 저장 가능 페이지 수 혹은 용량 제한
‣ 저장 가능한 페이지의 타입 제한 (e.g. text/html만 저장하고 script는 저장 안함)
오프라인 제한(Off-line Limits)
12.5.1. 선택정책 (Selection Policy)
Crawling을 진행하며 어떤페이지를 먼저 방문할지 정하는 것
웹 페이지들의 quality를 계산하여 우선 순위를 둔다.
• 전체 웹 페이지들을 모두 crawling 하기도 전에 quality를 평가하기는 어렵지만 다음과 같
은 다양한 방법들이 있다.
‣ 랜덤하게 방문
‣ Breath-first search(BFS): 일단 모든 웹 사이트에 방문
‣ 현재까지 가진 문서들로 PageRank
‣ PageRank와 비슷한 OPIC(On-line Page Importance Computation) 함수로 우선 순위 결정
• 결론적으로, 모든 연구마다 결과가 다르지만, OPIC은 성능이 항상 좋았음
온라인 선택(On-line Selection)
12.5.1. 선택정책 (Selection Policy)
Breadth First Search(너비 우선 검색)
–QUEUE 구현 (FIFO :First In First Out)
–최단 경로를 따라 페이지를 찾음
–시작 페이지가 좋으면 더 빨리 찾을 수 있음
Depth First Search (깊이 우선 검색)
–STACK 구현 (LIFO : Last In First Out)
–Wander away (“lost in cyberspace”)
- 중점 수집(Focused Crawling)
Topic과 관련있는 페이지들만 URL queue에 추가함
• 이때 topical locality을 이용함
• Topical locality: 웹 페이지 간에 링크가 존재하면 같은
topic의 페이지일 확률이 높다
온라인 선택(On-line Selection)
12.5.1. 선택정책 (Selection Policy)
• 변하는 페이지들을 감시하기 위한 정책
• 페이지들의 변화엔 다음과 같은 세 가지 event가 있다:
1. 생성(Creations) : 새로운 페이지의 생성
2. 갱신(Updates) : 기존 페이지의 변경
3. 삭제(Deletions) : 페이지의 삭제 (검색 엔진 성능에 가장 영향을 미침)
12.5.2. 재방문(revisit) 정책
12.5.2. 재방문(revisit) 정책
변경된 페이지
내려 받음
서버 내 웹
페이지 변경
재방문 전략
• 일률정책(uniform policy): 모든 페이지를 같은 주기로 재방문
• 비례정책(proportional policy): 더 자주 바뀌는 페이지는 더 자주 재 방문
• 결과: 두 방법 모두 나쁨. 하지만 일률 정책이 최적화에 가까움. Freshness를 잘 추정해야 됨
푸아송 분포(Poisson distribution)
단위 시간 안에 어떤 사건이 몇 번 발생할 것인지
를 표현하는 이산 확률 분포
12.5.2. 재방문(revisit) 정책
신선도 추정
• Crawling하고 있는 웹 서버에 예의를 지키는 정책
• 웹 서버에 과부하를 주지 않기 위해(차단 당하지 않기 위해) 적당한 속도로 crawling 하는 정책
• 웹 수집기의 운영을 위한 세 가지 기본 원칙
1. 로봇 인식(Robot Identification)
2. 로봇 배제 프로토콜(Robot Exclusion Protocol)
3. 대역폭 사용 통제
12.5.3. 공손도(Politeness) 정책
로봇인식(Robot Identification)
• HTTP 프로토콜에는 user-agent가 있는데 이곳에 crawler 의 정보를 적어야함:
crawler 이름, crawler에 대한 정보가 있는 사이트 주소, e-mail 등
• Bot들의 user-agent 예: Googlebot, Yeti(NAVER), Bingbot, daumoa(Daum), Baidu
대역폭 사용 통제(Controlling Bandwidth Usage)
웹서버 과부하를 피하기 위해서 연속적인 두 접속 사이에 수집기는 딜레이를 준다.
robots.txt에 페이지와 페이지 사이 딜레이를 얼마줄지 요구 할 수 있음.
• 예) 한 페이지를 다운로드 후, 45초를 기다린 다음에 다른 페이지를 받아가야함.
안그러면 차단 당할 수 있음.
로봇 배제 프로토콜(Robot Exclusion Protocol)
• 도메인 최상단에 robots.txt을 둬서 로봇들이 원하지 않는 페이지를 수집해가는걸 막음
• 메타-태그
• 지키지 않을시 법적 책임을 물을 수 있음
12.5.3. 공손도(Politeness) 정책
단기 스케줄링 평가
페이지 크기
수집 시간
각 페이지의 내려받는 속도가 다르고
두 페이지를 동시에 내려받을 수 없음(공손도 정책)
<최적의 단기 스케줄링> <실제 단기 스케줄링>
잃어버린
대역폭
장기 스케줄링 평가
전지적 전략(Omniscient)
이상적 전략. 어느 페이지가 순위가 높고 내려
받아야 하는지 알고 있음.
너비우선(breadth-first)
FIFO 큐에서 새로 발견된 URL 저장,
내려받을 URL 스케줄링
진입차수(in-degree)
이미 내려받은 웹의 부분에서 모든 집입 링크
더해서 다음 내려받을 페이지 선택
웹수집(Web Crawling)

More Related Content

What's hot

[2018 데이터야놀자] 웹크롤링 좀 더 잘하기
[2018 데이터야놀자] 웹크롤링 좀 더 잘하기[2018 데이터야놀자] 웹크롤링 좀 더 잘하기
[2018 데이터야놀자] 웹크롤링 좀 더 잘하기wangwon Lee
 
그로스해킹 기초
그로스해킹 기초그로스해킹 기초
그로스해킹 기초keunbong kwak
 
Making Good SEO Reports Portent Webinar
Making Good SEO Reports Portent WebinarMaking Good SEO Reports Portent Webinar
Making Good SEO Reports Portent WebinarBrightEdge
 
[창업자&예비창업자] 스타트업 마케팅 전략
[창업자&예비창업자] 스타트업 마케팅 전략[창업자&예비창업자] 스타트업 마케팅 전략
[창업자&예비창업자] 스타트업 마케팅 전략더게임체인저스
 
파이썬을 활용한 웹 크롤링
파이썬을 활용한 웹 크롤링파이썬을 활용한 웹 크롤링
파이썬을 활용한 웹 크롤링HWANGTAEYONG
 
Amazon Redshift의 이해와 활용 (김용우) - AWS DB Day
Amazon Redshift의 이해와 활용 (김용우) - AWS DB DayAmazon Redshift의 이해와 활용 (김용우) - AWS DB Day
Amazon Redshift의 이해와 활용 (김용우) - AWS DB DayAmazon Web Services Korea
 
메조미디어_미디어&마켓 리포트_2022.11.pdf
메조미디어_미디어&마켓 리포트_2022.11.pdf메조미디어_미디어&마켓 리포트_2022.11.pdf
메조미디어_미디어&마켓 리포트_2022.11.pdfMezzoMedia
 
[우리가 데이터를 쓰는 법] 좋다는 건 알겠는데 좀 써보고 싶소. 데이터! - 넘버웍스 하용호 대표
[우리가 데이터를 쓰는 법] 좋다는 건 알겠는데 좀 써보고 싶소. 데이터! - 넘버웍스 하용호 대표[우리가 데이터를 쓰는 법] 좋다는 건 알겠는데 좀 써보고 싶소. 데이터! - 넘버웍스 하용호 대표
[우리가 데이터를 쓰는 법] 좋다는 건 알겠는데 좀 써보고 싶소. 데이터! - 넘버웍스 하용호 대표Dylan Ko
 
제 17회 보아즈(BOAZ) 빅데이터 컨퍼런스 - [시켜줘, 보아즈 명예경찰관] : 보이스피싱 탐지 알고리즘
제 17회 보아즈(BOAZ) 빅데이터 컨퍼런스 - [시켜줘, 보아즈 명예경찰관] : 보이스피싱 탐지 알고리즘제 17회 보아즈(BOAZ) 빅데이터 컨퍼런스 - [시켜줘, 보아즈 명예경찰관] : 보이스피싱 탐지 알고리즘
제 17회 보아즈(BOAZ) 빅데이터 컨퍼런스 - [시켜줘, 보아즈 명예경찰관] : 보이스피싱 탐지 알고리즘BOAZ Bigdata
 
데이터가 흐르는 조직 만들기 - 마이리얼트립
데이터가 흐르는 조직 만들기 - 마이리얼트립데이터가 흐르는 조직 만들기 - 마이리얼트립
데이터가 흐르는 조직 만들기 - 마이리얼트립승화 양
 
데이터 분석가는 어떤 SKILLSET을 가져야 하는가? - 데이터 분석가 되기
데이터 분석가는 어떤 SKILLSET을 가져야 하는가?  - 데이터 분석가 되기데이터 분석가는 어떤 SKILLSET을 가져야 하는가?  - 데이터 분석가 되기
데이터 분석가는 어떤 SKILLSET을 가져야 하는가? - 데이터 분석가 되기Hui Seo
 
[메조미디어] Media&Market Report_2023.11
[메조미디어] Media&Market Report_2023.11[메조미디어] Media&Market Report_2023.11
[메조미디어] Media&Market Report_2023.11MezzoMedia
 
[메조미디어] Media&Market Report_2024.01
[메조미디어] Media&Market Report_2024.01[메조미디어] Media&Market Report_2024.01
[메조미디어] Media&Market Report_2024.01MezzoMedia
 
Data Engineering 101
Data Engineering 101Data Engineering 101
Data Engineering 101DaeMyung Kang
 
데이터 분석에 필요한 기본 개념: 지표, Funnel 등 데이터를 이해하기 위한 멘탈 모델(Mental Model)
데이터 분석에 필요한 기본 개념: 지표, Funnel 등 데이터를 이해하기 위한 멘탈 모델(Mental Model)데이터 분석에 필요한 기본 개념: 지표, Funnel 등 데이터를 이해하기 위한 멘탈 모델(Mental Model)
데이터 분석에 필요한 기본 개념: 지표, Funnel 등 데이터를 이해하기 위한 멘탈 모델(Mental Model)Minwoo Kim
 
마케팅 인사이트를 위한 데이터 분석
마케팅 인사이트를 위한 데이터 분석마케팅 인사이트를 위한 데이터 분석
마케팅 인사이트를 위한 데이터 분석ACE Trader
 
Data pipeline and data lake
Data pipeline and data lakeData pipeline and data lake
Data pipeline and data lakeDaeMyung Kang
 
[221] 딥러닝을 이용한 지역 컨텍스트 검색 김진호
[221] 딥러닝을 이용한 지역 컨텍스트 검색 김진호[221] 딥러닝을 이용한 지역 컨텍스트 검색 김진호
[221] 딥러닝을 이용한 지역 컨텍스트 검색 김진호NAVER D2
 
스타트업 데이터분석 - 퍼널분석과 코호트분석
스타트업 데이터분석 - 퍼널분석과 코호트분석스타트업 데이터분석 - 퍼널분석과 코호트분석
스타트업 데이터분석 - 퍼널분석과 코호트분석Seonggwan Lee
 

What's hot (20)

[2018 데이터야놀자] 웹크롤링 좀 더 잘하기
[2018 데이터야놀자] 웹크롤링 좀 더 잘하기[2018 데이터야놀자] 웹크롤링 좀 더 잘하기
[2018 데이터야놀자] 웹크롤링 좀 더 잘하기
 
그로스해킹 기초
그로스해킹 기초그로스해킹 기초
그로스해킹 기초
 
Making Good SEO Reports Portent Webinar
Making Good SEO Reports Portent WebinarMaking Good SEO Reports Portent Webinar
Making Good SEO Reports Portent Webinar
 
[창업자&예비창업자] 스타트업 마케팅 전략
[창업자&예비창업자] 스타트업 마케팅 전략[창업자&예비창업자] 스타트업 마케팅 전략
[창업자&예비창업자] 스타트업 마케팅 전략
 
파이썬을 활용한 웹 크롤링
파이썬을 활용한 웹 크롤링파이썬을 활용한 웹 크롤링
파이썬을 활용한 웹 크롤링
 
Amazon Redshift의 이해와 활용 (김용우) - AWS DB Day
Amazon Redshift의 이해와 활용 (김용우) - AWS DB DayAmazon Redshift의 이해와 활용 (김용우) - AWS DB Day
Amazon Redshift의 이해와 활용 (김용우) - AWS DB Day
 
메조미디어_미디어&마켓 리포트_2022.11.pdf
메조미디어_미디어&마켓 리포트_2022.11.pdf메조미디어_미디어&마켓 리포트_2022.11.pdf
메조미디어_미디어&마켓 리포트_2022.11.pdf
 
[우리가 데이터를 쓰는 법] 좋다는 건 알겠는데 좀 써보고 싶소. 데이터! - 넘버웍스 하용호 대표
[우리가 데이터를 쓰는 법] 좋다는 건 알겠는데 좀 써보고 싶소. 데이터! - 넘버웍스 하용호 대표[우리가 데이터를 쓰는 법] 좋다는 건 알겠는데 좀 써보고 싶소. 데이터! - 넘버웍스 하용호 대표
[우리가 데이터를 쓰는 법] 좋다는 건 알겠는데 좀 써보고 싶소. 데이터! - 넘버웍스 하용호 대표
 
제 17회 보아즈(BOAZ) 빅데이터 컨퍼런스 - [시켜줘, 보아즈 명예경찰관] : 보이스피싱 탐지 알고리즘
제 17회 보아즈(BOAZ) 빅데이터 컨퍼런스 - [시켜줘, 보아즈 명예경찰관] : 보이스피싱 탐지 알고리즘제 17회 보아즈(BOAZ) 빅데이터 컨퍼런스 - [시켜줘, 보아즈 명예경찰관] : 보이스피싱 탐지 알고리즘
제 17회 보아즈(BOAZ) 빅데이터 컨퍼런스 - [시켜줘, 보아즈 명예경찰관] : 보이스피싱 탐지 알고리즘
 
데이터가 흐르는 조직 만들기 - 마이리얼트립
데이터가 흐르는 조직 만들기 - 마이리얼트립데이터가 흐르는 조직 만들기 - 마이리얼트립
데이터가 흐르는 조직 만들기 - 마이리얼트립
 
데이터 분석가는 어떤 SKILLSET을 가져야 하는가? - 데이터 분석가 되기
데이터 분석가는 어떤 SKILLSET을 가져야 하는가?  - 데이터 분석가 되기데이터 분석가는 어떤 SKILLSET을 가져야 하는가?  - 데이터 분석가 되기
데이터 분석가는 어떤 SKILLSET을 가져야 하는가? - 데이터 분석가 되기
 
Data Science. Intro
Data Science. IntroData Science. Intro
Data Science. Intro
 
[메조미디어] Media&Market Report_2023.11
[메조미디어] Media&Market Report_2023.11[메조미디어] Media&Market Report_2023.11
[메조미디어] Media&Market Report_2023.11
 
[메조미디어] Media&Market Report_2024.01
[메조미디어] Media&Market Report_2024.01[메조미디어] Media&Market Report_2024.01
[메조미디어] Media&Market Report_2024.01
 
Data Engineering 101
Data Engineering 101Data Engineering 101
Data Engineering 101
 
데이터 분석에 필요한 기본 개념: 지표, Funnel 등 데이터를 이해하기 위한 멘탈 모델(Mental Model)
데이터 분석에 필요한 기본 개념: 지표, Funnel 등 데이터를 이해하기 위한 멘탈 모델(Mental Model)데이터 분석에 필요한 기본 개념: 지표, Funnel 등 데이터를 이해하기 위한 멘탈 모델(Mental Model)
데이터 분석에 필요한 기본 개념: 지표, Funnel 등 데이터를 이해하기 위한 멘탈 모델(Mental Model)
 
마케팅 인사이트를 위한 데이터 분석
마케팅 인사이트를 위한 데이터 분석마케팅 인사이트를 위한 데이터 분석
마케팅 인사이트를 위한 데이터 분석
 
Data pipeline and data lake
Data pipeline and data lakeData pipeline and data lake
Data pipeline and data lake
 
[221] 딥러닝을 이용한 지역 컨텍스트 검색 김진호
[221] 딥러닝을 이용한 지역 컨텍스트 검색 김진호[221] 딥러닝을 이용한 지역 컨텍스트 검색 김진호
[221] 딥러닝을 이용한 지역 컨텍스트 검색 김진호
 
스타트업 데이터분석 - 퍼널분석과 코호트분석
스타트업 데이터분석 - 퍼널분석과 코호트분석스타트업 데이터분석 - 퍼널분석과 코호트분석
스타트업 데이터분석 - 퍼널분석과 코호트분석
 

Similar to 웹수집(Web Crawling)

확장가능한 웹 아키텍쳐 구축 방안
확장가능한 웹 아키텍쳐 구축 방안 확장가능한 웹 아키텍쳐 구축 방안
확장가능한 웹 아키텍쳐 구축 방안 IMQA
 
구글의 분산스토리지
구글의 분산스토리지구글의 분산스토리지
구글의 분산스토리지juhyun
 
HTTP 완벽 가이드 9~10장
HTTP 완벽 가이드 9~10장HTTP 완벽 가이드 9~10장
HTTP 완벽 가이드 9~10장Hyejin Oh
 
대용량 분산 아키텍쳐 설계 #2 대용량 분산 시스템 아키텍쳐 디자인 패턴
대용량 분산 아키텍쳐 설계 #2 대용량 분산 시스템 아키텍쳐 디자인 패턴대용량 분산 아키텍쳐 설계 #2 대용량 분산 시스템 아키텍쳐 디자인 패턴
대용량 분산 아키텍쳐 설계 #2 대용량 분산 시스템 아키텍쳐 디자인 패턴Terry Cho
 
AWS 엣지 서비스를 통한 글로벌 서비스 관리 전략 - AWS Summit Seoul 2017
 AWS 엣지 서비스를 통한 글로벌 서비스 관리 전략 - AWS Summit Seoul 2017 AWS 엣지 서비스를 통한 글로벌 서비스 관리 전략 - AWS Summit Seoul 2017
AWS 엣지 서비스를 통한 글로벌 서비스 관리 전략 - AWS Summit Seoul 2017Amazon Web Services Korea
 
AWS Innovate: Best Practices for Migrating to Amazon DynamoDB - Sangpil Kim
AWS Innovate: Best Practices for Migrating to Amazon DynamoDB - Sangpil KimAWS Innovate: Best Practices for Migrating to Amazon DynamoDB - Sangpil Kim
AWS Innovate: Best Practices for Migrating to Amazon DynamoDB - Sangpil KimAmazon Web Services Korea
 
웹에 빠른 날개를 달아주는 웹 성능 향상 이야기
웹에 빠른 날개를 달아주는 웹 성능 향상 이야기웹에 빠른 날개를 달아주는 웹 성능 향상 이야기
웹에 빠른 날개를 달아주는 웹 성능 향상 이야기SangJin Kang
 
[2012널리세미나] 오빠~ 네이버 왜 이렇게 늦게 떠?
[2012널리세미나] 오빠~ 네이버 왜 이렇게 늦게 떠?[2012널리세미나] 오빠~ 네이버 왜 이렇게 늦게 떠?
[2012널리세미나] 오빠~ 네이버 왜 이렇게 늦게 떠?Nts Nuli
 
google dinos
google dinosgoogle dinos
google dinosjuhyun
 
HTML과 CSS
HTML과 CSSHTML과 CSS
HTML과 CSSdgmong
 
NDC 2015 마비노기 듀얼 패치 시스템
NDC 2015 마비노기 듀얼 패치 시스템NDC 2015 마비노기 듀얼 패치 시스템
NDC 2015 마비노기 듀얼 패치 시스템tcaesvk
 
Web server
Web serverWeb server
Web serverHerren
 
AWS를 활용한 글로벌 아키텍처 운용 전략 - 김상필 솔루션즈 아키텍트:: AWS Cloud Track 2 Advanced
AWS를 활용한 글로벌 아키텍처 운용 전략 - 김상필 솔루션즈 아키텍트:: AWS Cloud Track 2 AdvancedAWS를 활용한 글로벌 아키텍처 운용 전략 - 김상필 솔루션즈 아키텍트:: AWS Cloud Track 2 Advanced
AWS를 활용한 글로벌 아키텍처 운용 전략 - 김상필 솔루션즈 아키텍트:: AWS Cloud Track 2 AdvancedAmazon Web Services Korea
 
아마존 닷컴의 클라우드 활용 사례 - AWS Summit Seoul 2017
아마존 닷컴의 클라우드 활용 사례 - AWS Summit Seoul 2017아마존 닷컴의 클라우드 활용 사례 - AWS Summit Seoul 2017
아마존 닷컴의 클라우드 활용 사례 - AWS Summit Seoul 2017Amazon Web Services Korea
 
빅데이터 기술 현황과 시장 전망(2014)
빅데이터 기술 현황과 시장 전망(2014)빅데이터 기술 현황과 시장 전망(2014)
빅데이터 기술 현황과 시장 전망(2014)Channy Yun
 
서버성능개선 류우림
서버성능개선 류우림서버성능개선 류우림
서버성능개선 류우림우림 류
 
Sever Side Rendering - 2019 Zeropage Devil's Camp
Sever Side Rendering - 2019 Zeropage Devil's CampSever Side Rendering - 2019 Zeropage Devil's Camp
Sever Side Rendering - 2019 Zeropage Devil's CampMookeunJi
 

Similar to 웹수집(Web Crawling) (20)

확장가능한 웹 아키텍쳐 구축 방안
확장가능한 웹 아키텍쳐 구축 방안 확장가능한 웹 아키텍쳐 구축 방안
확장가능한 웹 아키텍쳐 구축 방안
 
구글의 분산스토리지
구글의 분산스토리지구글의 분산스토리지
구글의 분산스토리지
 
HTTP 완벽 가이드 9~10장
HTTP 완벽 가이드 9~10장HTTP 완벽 가이드 9~10장
HTTP 완벽 가이드 9~10장
 
대용량 분산 아키텍쳐 설계 #2 대용량 분산 시스템 아키텍쳐 디자인 패턴
대용량 분산 아키텍쳐 설계 #2 대용량 분산 시스템 아키텍쳐 디자인 패턴대용량 분산 아키텍쳐 설계 #2 대용량 분산 시스템 아키텍쳐 디자인 패턴
대용량 분산 아키텍쳐 설계 #2 대용량 분산 시스템 아키텍쳐 디자인 패턴
 
CDN overview
CDN overviewCDN overview
CDN overview
 
AWS 엣지 서비스를 통한 글로벌 서비스 관리 전략 - AWS Summit Seoul 2017
 AWS 엣지 서비스를 통한 글로벌 서비스 관리 전략 - AWS Summit Seoul 2017 AWS 엣지 서비스를 통한 글로벌 서비스 관리 전략 - AWS Summit Seoul 2017
AWS 엣지 서비스를 통한 글로벌 서비스 관리 전략 - AWS Summit Seoul 2017
 
AWS Innovate: Best Practices for Migrating to Amazon DynamoDB - Sangpil Kim
AWS Innovate: Best Practices for Migrating to Amazon DynamoDB - Sangpil KimAWS Innovate: Best Practices for Migrating to Amazon DynamoDB - Sangpil Kim
AWS Innovate: Best Practices for Migrating to Amazon DynamoDB - Sangpil Kim
 
웹에 빠른 날개를 달아주는 웹 성능 향상 이야기
웹에 빠른 날개를 달아주는 웹 성능 향상 이야기웹에 빠른 날개를 달아주는 웹 성능 향상 이야기
웹에 빠른 날개를 달아주는 웹 성능 향상 이야기
 
[2012널리세미나] 오빠~ 네이버 왜 이렇게 늦게 떠?
[2012널리세미나] 오빠~ 네이버 왜 이렇게 늦게 떠?[2012널리세미나] 오빠~ 네이버 왜 이렇게 늦게 떠?
[2012널리세미나] 오빠~ 네이버 왜 이렇게 늦게 떠?
 
google dinos
google dinosgoogle dinos
google dinos
 
HTML과 CSS
HTML과 CSSHTML과 CSS
HTML과 CSS
 
NDC 2015 마비노기 듀얼 패치 시스템
NDC 2015 마비노기 듀얼 패치 시스템NDC 2015 마비노기 듀얼 패치 시스템
NDC 2015 마비노기 듀얼 패치 시스템
 
Web server
Web serverWeb server
Web server
 
AWS를 활용한 글로벌 아키텍처 운용 전략 - 김상필 솔루션즈 아키텍트:: AWS Cloud Track 2 Advanced
AWS를 활용한 글로벌 아키텍처 운용 전략 - 김상필 솔루션즈 아키텍트:: AWS Cloud Track 2 AdvancedAWS를 활용한 글로벌 아키텍처 운용 전략 - 김상필 솔루션즈 아키텍트:: AWS Cloud Track 2 Advanced
AWS를 활용한 글로벌 아키텍처 운용 전략 - 김상필 솔루션즈 아키텍트:: AWS Cloud Track 2 Advanced
 
아마존 닷컴의 클라우드 활용 사례 - AWS Summit Seoul 2017
아마존 닷컴의 클라우드 활용 사례 - AWS Summit Seoul 2017아마존 닷컴의 클라우드 활용 사례 - AWS Summit Seoul 2017
아마존 닷컴의 클라우드 활용 사례 - AWS Summit Seoul 2017
 
빅데이터 기술 현황과 시장 전망(2014)
빅데이터 기술 현황과 시장 전망(2014)빅데이터 기술 현황과 시장 전망(2014)
빅데이터 기술 현황과 시장 전망(2014)
 
서버성능개선 류우림
서버성능개선 류우림서버성능개선 류우림
서버성능개선 류우림
 
Sever Side Rendering - 2019 Zeropage Devil's Camp
Sever Side Rendering - 2019 Zeropage Devil's CampSever Side Rendering - 2019 Zeropage Devil's Camp
Sever Side Rendering - 2019 Zeropage Devil's Camp
 
Talos
TalosTalos
Talos
 
Google요약
Google요약Google요약
Google요약
 

웹수집(Web Crawling)

  • 1. • 날짜 : 2018-01-24 • 검색엔진팀 / 왕인영(wangin6@gmail.com)
  • 2.
  • 3. 웹 수집기(Web Crawler, 웹스파이더, 웹로봇)  웹으로부터 페이지를 자동으로 수집하는 소프트웨어  색인과 탐색에 사용됨 데이터의 최신 상태 유지를 위해서 웹 크롤링을 함 :웹 크롤러는 방문한 사이트의 모든 페이지의 복사본 생성 생성된 페이지를 보다 빠른 검색을 위해서 인덱싱 함 대표적인 예시) 검색엔진
  • 4. * 메타태그란 : 하이퍼텍스트 생성 언어 HTML 문서의 맨 위쪽에 위치하는 태그(tag)로 브라우저와 검색 엔진을 사용할 수 있도록 웹 문서의 정보를 포함함 즉, 메타태그는 웹 페이지의 요약
  • 5. General Web Search 일반적인 검색엔진(e.g. NAVER, Google) Vertical Crawling 특정 영역만을 다루는 검색엔진(e.g. Amazon, 뉴스 수집기) Topical Crawling 특정 주제와 관련된 문서만을 다루는 focused crawlers(e.g. 여행 후기 수집기) Web Characterization 웹 사이트들에 대한 통계 추출(효과적인 검색 엔진을 만들기 위한 사전 조사) Mirroring 웹 사이트 복제(서버를 분산시켜 성능 향상) Web Site Analysis 그 외에 여러 분석 작업(e.g. “broken links” 조사, Wikipedia 문서 분류)
  • 6. - 대규모 검색엔진에 의해 이루어지는 형태 - 구글이나 네이버 웹의 특정 부분 집합에 중점을 둠 특정 사용자의 필요를 위한 내용을 제공할 수 있기 위함 General Web Search 일반적인 검색엔진 Vertical Crawling 특정 영역만을 다루는 검색엔진 가게 봇 스팸 봇
  • 7. 주어진 주제에 정합하는 페이지로 수집기를 제약시켜 필요 이상의 페이지를 수집하는 것을 피한다. 주제 관련 페이지를 주기적으로 수집하거나 , 주문(on-demand) 방식 : 사용자 질의를 통해서 페이지를 모음  웹 특성 평가를 위해서 사용됨.  효과적인 웹 검색엔진을 구축하기 위한 전제 조건.  특성 평가에서는 수집을 위한 시작 URL의 선택이 매우 결정. Topical Crawling 특정 주제와 관련된 문서만을 다루는 focused crawlers Web Characterization 웹 사이트들에 대한 통계 추출 (효과적인 검색 엔진을 만들기 위한 사전 조사)
  • 8. 웹 사이트의 일부나 전체를 보존하는 행위이다. 의도 : 서버의 부하를 분산하고 다른 네트워크의 사용자에게 빠른 접근을 제공하는 것. 웹 수집기는 웹 사이트를 분석하는 데 쓰일 수 있다. 링크 유효성 검사(link validation) : 존재하지 않는 페이지에 대한 '끊어진 링크(broken link)'를 찾기 위해 페이지를 자동으로 스캔하는 것. E.g. Wikipedia 문서 분류 Mirroring 웹 사이트 복제(서버를 분산시켜 성능 향상) Web Site Analysis 그 외에 여러 분석 작업 코드 유효성 검사(code validation) : 각기 쓰여진 언어에 따라 페이지와 스타일 시트, 스크립트 등이 유효한지 확인하는 것.
  • 9.  신선도(freshness) 최신의 문서가 중요  품질(quality) 문서의 질이 주요  용량(volume) 문서의 양이 중요
  • 10. 웹 페이지의 형태 • Private/Public: 사용자 인증의 유무 • Static/Dynamic: 서버가 동적으로 페이지를 생성하는가? 사적 웹 - 비밀번호로 보호되는 페이지. 인트라넷의 경우가 해당. 이런 페이지는 색인화되지 않고 수집기가 볼 수 없음. 공용 웹 – 웹 수집기가 색인으로 만들 수 있는 부분. 정적 페이지 - 웹에 존재하는 페이지. 동적 페이지 - '숨겨진 웹(hidden web)' , 웹 서버에 요청이 오기 전에는 존재하지 않는 페이지 e.g.회사 인트라넷 e.g.네이버블로그 e.g.검색 결과 페이지
  • 11. • Scheduler: 프론티어(frontier)로도 알려져 있는 방문할 페이지들의 URL 큐 관리 • Downloader: 각 URL의 내용 검색해서 구문 분석 후 저장소 모듈로 보냄 • Storage: 문서 저장, indexing, metadata 제공
  • 12.  Master(Frontier) : 서버역할, Agent가 수집한 URL을 전송받아 관리하고 필터링된 URL을 다시 Agent로 분배  Slave(Agent) : Frontier로부터 URL을 전송받아 해당 URL의 웹페이지(HTML)를 처리. 다른 웹페이지에 대한 URL link와 이미지 등의 리소스 URL link를 추출하고 모든 URL 링크는 Frontier로 전송  Monitor : Frontier와 Agent의 동작상태 모니터링 하고 제어기능을 포함 master/slave 모델 세가지 컴포넌트로 구성 : Master(Frontier), Slave(Agent), Monitor. 웹 크롤러의 기본 구성 **프론티어(frontier)에 대한 보충설명
  • 13. <스케줄링과 저장소 세분화> 장기 스케줄링(Long-term Scheduler) 품질과 신선도 평가에 따라 다음 방문할 페이지를 결정. 시간 간격 : 몇 시간 혹은 며칠 단기 스케줄링(Short-term Scheduler) 공손도 정책 혹은 네트워크 사용 최적화에 따라 페이지를 재배정. 시간간격 : 몇 초나 몇 분 (서식 있는) 텍스트 ※ 한 페이지를 가져온 뒤 일 정 시간을 기다림 (politeness policy)
  • 14. 12.4.2 수집기의 구현에서 나타나는 실직적 쟁점  DNS(Domain Name System) 서버의 일시 장애  많은 URL이 같은 문서를 가리킴  Parsing Error: 많은 웹 페이지가 HTML 문법에 맞지 않음  Soft-404 Pages: 서버들이 404 응답 코드를 보내지 않고 custom-built error page를 반환함  Duplicates: 웹의 30%가 중복된 문서
  • 15. DNS는 일시적 DNS 고장과 기형 또는 DNS 기록 오류 등으로 인해서 DNS 해석의 효율성 문제가 있다 DNS 캐싱 : 더 자주 해석되는 도메인 이름의 IP 주소를 저장. DNS 해석(DNS Resolution) URL 정규화(URL Canonization)  DNS(Domain Name System) 서버의 일시 장애  많은 URL이 같은 문서를 가리킴 *슁글링(shingling) - 문서를 정해진 윈도우 사이즈의 슁글(shingle)로 표현하고, 이것을 이용하여 문서의 변경도를 측정. - 0~1 사이의 값으로 표현. 문서를 정해진 크기의 토큰으로 자른 슁글을 이용하여 표현하고, 이것을 통하여 중복 문서를 찾아낸다. • 웹은 동일한 내용을 가리키는 많은 양의 URL을 지니고 있음. • 슁글링(shingling)을 통해 간단한 문법 규칙의 집합을 URL에 적용해서 중복 내려받기를 피할 수 있다.
  • 16. -소프트(Soft)-404 페이지  Soft-404 Pages: 서버들이 404 응답 코드를 보내지 않고 custom-built error page를 반환함  Parsing Error: 많은 웹 페이지가 HTML 문법에 맞지 않음 - 구문 분석(Parsing) • 많은 웹 페이지들이 HTML 언어의 사양을 충실히 지키지 않고 형편없는 코드로 작성되있음. • 웹 브라우저는 잘못 코딩이 되어있더라도 HTML이 보이게 하도록 설계되어있기 때문. • HTML 구문 분석할 때 코딩의 오류를 허용해야함. ** 구문 분석을 해야하는 이유 : 정보 추출 문제 해결 방안 • URL을 요청하고 제대로 된 응답 코드를 받게되면 그 때 검증 • 텍스트 분류기를 통해 이런 페이지가 표현하는 메시지 와 연관된 특정 구나 키워드를 학습하여 자동으로 인지
  • 17. -중복(Duplicates)  Duplicates: 웹의 30%가 중복된 문서 고의적/비고의적 복제 - 비고의적인 복제의 원인 : URL의 식별자 식별자는 세션을 탐지하기 위해 사용되는데 이 세션 아이디 때문에 한 사이트에서만 여러 사람의 세션값이 존재할 수 있어 무한한 수의 URL이 발견될 수 있다. 네트워크 자원이 낭비될 수 있음.
  • 18. 12.4.3 병렬 수집(Parallel Crawling) 확장성(scalability)과 장애 복구(fault tolerance)를 위해 multithreading과 분산 컴퓨팅이 필요 • 다중 스레드 사용하는 이유 : 수집기가 사용 가능한 대역폭이 일반적으로 개별 웹 사이트의 대역폭보다 훨씬 크기 때문. -> 수집기가 각 개별 내려받기 스레드가 끝나기를 기다리기 전에 다음 페이지를 요청해야 함을 의미. • 분산환경에서 수집기를 실행할 때 가장 중요한 것 : 동일 페이지를 중복해서 내려받는 것을 피해 웹 서버에 과부하를 주지 말아야 한다는 것. 통신 오버헤드를 최소화해야 한다는 것을 목표로함.
  • 19. 12.4.3 병렬 수집(Parallel Crawling) • 분산수집시스템 새로운 URL 발견할 때 어떤 프로세스가 주어진 URL을 내려받아야 하는지 결정해야함 –> 할당함수(assignment function) 한 웹 사이트 대부분의 링크가 동일 사이트의 페이지라는 것 알기 위해서 동일 호스트 페이지를 할당 함수가 한 프로세스에 할당해야함. -> 해싱 함수 이용해서 호스트 이름을 프로세스 색인에 해당하는 번호로 전환 할당함수의 특성 균형 특성 (각 수집 프로세스는 같은 수의 호스트 가져야 함) 반-가변성 특성(수집 프로세스 수가 증가하면 각 프로세스에 할당된 호스트 수 줄여야 함) 수집 프로세스 동적으로 추가/제거 가능 -> 일관 해싱(consistent hashing) 사용.
  • 20. 웹서버의 갯수가 변동할 때 요청을 분산하는 방법 HashRing에 k 개의 노드가 있는 상황에서, 노드가 사라지거나 추가될 때 1/k 정도의 key에 대한 것만 유실이 되고 나머지 key는 변동 없이 그 위치에 존재한다는 것 같은 값으로 노드들이 만들어지면 그 순서도 항상 동일 12.4.3 병렬 수집(Parallel Crawling) * 일관된 해싱(Consistent hashing) * 일반적인 해싱 방법 * Consistent Hashing의 작동 방식 cache machine은 구간을 정함. 그 구간에는 많은 Object의 해시값을 가지고 있음. 기존의 cache machine이 제거되면, 인접한 구간의 남아있는 cache machine이 제거된 구간을 맡게됨.
  • 21. 12.4.3 병렬 수집(Parallel Crawling) * 일관된 해싱(Consistent hashing)
  • 22. 웹은 동적이기 때문에 매일 많은 양의 페이지가 추가되고 바뀌고 제거된다. 웹 수집기는 항상 새로운 페이지를 업데이트하기를 원한다. 항상 새로운 페이지를 찾고자 하며 변화를 감지하기 위해서 방문했던 페이지들을 다시 방문해야 한다.
  • 23. - 선택 정책 (질적으로 가장 좋은 페이지를 첫 번째로 방문하는 목적) - 재방문 정책 (페이지가 변경될 때 색인을 수정하는 목적) - 공손도 정책 (웹 사이트에 과부하가 걸리지 않게 하는 목적) Crawler는 다음과 같은 trade-off 관계에 있는 목적들을 극대화하기 위해 scheduling을 잘 해야함 1. 웹 페이지를 재방문하여 변화를 감지해야한다. 2. 새로운 웹 페이지를 찾아낼 수 있어야 한다. 3. Network bandwidth를 효율적으로 사용해야한다. (쓸 모 없는 웹 페이지는 다운로드하지 않음)
  • 24. 12.5.1. 선택정책 (Selection Policy) • Crawler는 다음에 방문할 페이지들을 신중히 선택해야함 • Selection policy는 쓸데 없는 페이지를 다운로드 하는데 network bandwidth를 낭비하는 것을 막아줌 • Selection policy는 다음과 같이 두 가지 타입으로 나뉜다 1. 오프라인제한(Off-line Limits): Crawling 시작 전에 최대 저장할 페이지 양을 제한함 2. 온라인 선택(On-line Selection): Crawling을 진행하며 어떤페이지를 먼저 방문할지 정하는 것
  • 25. • 저장소 용량의 한계로 인해, crawling 시작 전에 최대 저장할 페이지들의 양을 정할 필요가 있다. • 자주 사용되는 off-line limits: ‣ 웹 사이트 수의 제한 ‣ 최대 링크 depth 제한 (링크를 몇 번까지 타고 들어갈지) ‣ 최대 저장 페이지 수 제한 ‣ 웹 사이트 당 최대 저장 가능 페이지 수 혹은 용량 제한 ‣ 저장 가능한 페이지의 타입 제한 (e.g. text/html만 저장하고 script는 저장 안함) 오프라인 제한(Off-line Limits) 12.5.1. 선택정책 (Selection Policy)
  • 26. Crawling을 진행하며 어떤페이지를 먼저 방문할지 정하는 것 웹 페이지들의 quality를 계산하여 우선 순위를 둔다. • 전체 웹 페이지들을 모두 crawling 하기도 전에 quality를 평가하기는 어렵지만 다음과 같 은 다양한 방법들이 있다. ‣ 랜덤하게 방문 ‣ Breath-first search(BFS): 일단 모든 웹 사이트에 방문 ‣ 현재까지 가진 문서들로 PageRank ‣ PageRank와 비슷한 OPIC(On-line Page Importance Computation) 함수로 우선 순위 결정 • 결론적으로, 모든 연구마다 결과가 다르지만, OPIC은 성능이 항상 좋았음 온라인 선택(On-line Selection) 12.5.1. 선택정책 (Selection Policy)
  • 27. Breadth First Search(너비 우선 검색) –QUEUE 구현 (FIFO :First In First Out) –최단 경로를 따라 페이지를 찾음 –시작 페이지가 좋으면 더 빨리 찾을 수 있음 Depth First Search (깊이 우선 검색) –STACK 구현 (LIFO : Last In First Out) –Wander away (“lost in cyberspace”)
  • 28. - 중점 수집(Focused Crawling) Topic과 관련있는 페이지들만 URL queue에 추가함 • 이때 topical locality을 이용함 • Topical locality: 웹 페이지 간에 링크가 존재하면 같은 topic의 페이지일 확률이 높다 온라인 선택(On-line Selection) 12.5.1. 선택정책 (Selection Policy)
  • 29. • 변하는 페이지들을 감시하기 위한 정책 • 페이지들의 변화엔 다음과 같은 세 가지 event가 있다: 1. 생성(Creations) : 새로운 페이지의 생성 2. 갱신(Updates) : 기존 페이지의 변경 3. 삭제(Deletions) : 페이지의 삭제 (검색 엔진 성능에 가장 영향을 미침) 12.5.2. 재방문(revisit) 정책
  • 30. 12.5.2. 재방문(revisit) 정책 변경된 페이지 내려 받음 서버 내 웹 페이지 변경
  • 31. 재방문 전략 • 일률정책(uniform policy): 모든 페이지를 같은 주기로 재방문 • 비례정책(proportional policy): 더 자주 바뀌는 페이지는 더 자주 재 방문 • 결과: 두 방법 모두 나쁨. 하지만 일률 정책이 최적화에 가까움. Freshness를 잘 추정해야 됨 푸아송 분포(Poisson distribution) 단위 시간 안에 어떤 사건이 몇 번 발생할 것인지 를 표현하는 이산 확률 분포 12.5.2. 재방문(revisit) 정책 신선도 추정
  • 32. • Crawling하고 있는 웹 서버에 예의를 지키는 정책 • 웹 서버에 과부하를 주지 않기 위해(차단 당하지 않기 위해) 적당한 속도로 crawling 하는 정책 • 웹 수집기의 운영을 위한 세 가지 기본 원칙 1. 로봇 인식(Robot Identification) 2. 로봇 배제 프로토콜(Robot Exclusion Protocol) 3. 대역폭 사용 통제 12.5.3. 공손도(Politeness) 정책
  • 33. 로봇인식(Robot Identification) • HTTP 프로토콜에는 user-agent가 있는데 이곳에 crawler 의 정보를 적어야함: crawler 이름, crawler에 대한 정보가 있는 사이트 주소, e-mail 등 • Bot들의 user-agent 예: Googlebot, Yeti(NAVER), Bingbot, daumoa(Daum), Baidu 대역폭 사용 통제(Controlling Bandwidth Usage) 웹서버 과부하를 피하기 위해서 연속적인 두 접속 사이에 수집기는 딜레이를 준다. robots.txt에 페이지와 페이지 사이 딜레이를 얼마줄지 요구 할 수 있음. • 예) 한 페이지를 다운로드 후, 45초를 기다린 다음에 다른 페이지를 받아가야함. 안그러면 차단 당할 수 있음. 로봇 배제 프로토콜(Robot Exclusion Protocol) • 도메인 최상단에 robots.txt을 둬서 로봇들이 원하지 않는 페이지를 수집해가는걸 막음 • 메타-태그 • 지키지 않을시 법적 책임을 물을 수 있음 12.5.3. 공손도(Politeness) 정책
  • 34. 단기 스케줄링 평가 페이지 크기 수집 시간 각 페이지의 내려받는 속도가 다르고 두 페이지를 동시에 내려받을 수 없음(공손도 정책) <최적의 단기 스케줄링> <실제 단기 스케줄링> 잃어버린 대역폭
  • 35. 장기 스케줄링 평가 전지적 전략(Omniscient) 이상적 전략. 어느 페이지가 순위가 높고 내려 받아야 하는지 알고 있음. 너비우선(breadth-first) FIFO 큐에서 새로 발견된 URL 저장, 내려받을 URL 스케줄링 진입차수(in-degree) 이미 내려받은 웹의 부분에서 모든 집입 링크 더해서 다음 내려받을 페이지 선택

Editor's Notes

  1. 웹 검색의 경우 페이지들은 나중에 색인과 탐색에 쓰이게 된다. 검색엔진과 같은 여러 사이트에서는 데이터의 최신 상태 유지를 위해서 웹 크롤링한다.  웹 크롤러는 방문한 사이트의 모든 페이지의 복사본 생성하는데 사용되며 검색 엔진은 이렇게 생성된 페이지를 보다 빠른 검색을 위해서 인덱싱한다.
  2. 크롤러가 방문한 웹 페이지에서 새로운 링크(link)를 발견하면 웹 서버에 데이터 정보를 요청하고 이때 웹 서버는 검색엔진에게 웹 페이지 정보를 보내는데 이것이 바로 메타태그가 포함된 사이트 정보이다. 크롤러는 그렇게 추가로 수집한 URL에서 단어와 문구를 분리하여 저장한다. 저장과정에서 각 단어와 문구에 가중치와 연관도를 부여하고 최종 결과값을 인덱스(색인)한다. 
  3. 웹 수집기의 핵심 응용은 광범위한 주제를 다루는 일반 웹 탐색이나 특정 주제를 다루는 종적 웹 탐색을 다루는 색인 생성하는 것이다. 내용을 보관하고 집단 통계를 추출해서 특성을 파악하고 자동으로 웹 사이트 분석하는 것에도 사용하며 특정 사이트를 위해서 분석 후 설계를 향상시키고 그들 페이지의 복사물을 보관(웹 미러링) 하는데 사용함
  4. 2. 웹의 특정 부분 집합에 중점을 둔다. 페이지의 부분집합은 지리적, 언어적, 주제별 등으로 다양하게 정의될 수 있는데  가게봇(shopbot) - 온라인 쇼핑 카탈로그에서 정보를 내려받는 등 쇼핑에 집중된 형태로 가격 비교를 위한 인터페이스를 제공하기 위해 설계된 수집기 뉴스수집기 - 뉴스 항목을 수집하여 항상 최신의 상태로 유지하는 것. 뉴스 모음이 생성되고 나면 뉴스 항목은 중복과 공통 주제를 감지해서 사용자에게 집단화된 형태로 보여주게 된다. 스팸봇 - 악의적인 목적으로 웹 페이지에 삽입된 전자우편 주소 수집을 목표로 하여 나중에 상업적 메세지를 전자 우편으로 보내는 데 사용된다. 
  5. 페이지의 시작 집합과 수집 시 새로운 페이지를 고르는 전략은 특성 평가의 결과에 크게 영향을 미친다.
  6. 수집기의 목표는 다를 수 있다. 응용에 따라서 서로 다른 쟁점을 가질 수 있게 되는데 신선도, 품질, 용량으로 분류할 수 있다. 신선도(freshness) - 문서가 최근 것이어야할 경우도 있고 오래된 복사물이어야할 경우도 있다. 품질(quality) – 어떤 수집기는 특정 웹의 높은 품질 부분을 목표로 하는 반면, 다른 수집기는 여러 품질 계층을 폭넓게 포함시키는데 더 관심을 가진다. 용량(volume) – 몇몇 수집기는 웹의 많은 부분을 보존하는데 관심이 있는 반면 다른 수집기는 품질과 신선도를 위해 양보다는 질에 신경을 쓰기도 한다. 그림) 미러 시스템은 페이지의 정확하고 완전한 보관을 위해 설계된 반면, 종적(vertical) 검색엔진이나 개인 수집기는 페이지의 고품질 내용 부분의 선호도 순위를 우선으로 한다. 
  7. 사적 웹 - 비밀번호로 보호되는 페이지. 인트라넷의 경우가 해당. 이런 페이지는 색인화되지 않고 수집기가 볼 수 없다. 공용 웹 - 웹 수집기가 색인으로 만들 수 있는 부분이다. 정적 페이지 - 웹에 존재하는 페이지로 사용자가 요청하길 기다린다. 동적 페이지 - 웹 서버에 요청이 오기 전에는 존재하지 않는 페이지로 요청을 해석하고 요구에 의한 페이지를 생성한 후 사용자에게 되돌려준다. '숨겨진 웹(hidden web)'이라고도 불리며 색인이 만들어지기 어렵다. ex) 검색엔진에 의해 보여지는 결과 페이지.
  8. 수집기는 다운로더, 저장소, 스케줄러 등 세 모듈로 이루어져 있고 결정적인 모듈은 스케줄러이다. 스케쥴러는 '프론티어(frontier)'로도 알려져 있는 방문할 URL의 큐를 유지하고, 하나 또는 그 이상의 다운로더를 특정 순서로 큐에서 순서대로 나오는 그 URL에 보내게 된다.  다운로더는 각 URL에 해당하는 내용을 검색해서 구문 분석 후 저장소 모듈에 보내며 나중에 색인화되고 검색하게 된다. 또 저장소 모듈은 해당 페이지에서 검색된 메타데이터를 스케줄러에 제공하게 되는데 메타데이터는 스케줄링 정책을 구동시키는 데 중요한 정보가 된다. 
  9. 웹 크롤러는 master/slave 모델을 따르며 Master(Frontier), Slave(Agent), Monitor 세가지의 컴포넌트로 이루어져있다. Master(Frontier)는 서버역할, Agent가 수집한 URL을 전송받아 관리하고 필터링된 URL을 다시 Agent로 분배한다. Slave(Agent)는 Frontier로부터 URL을 전송받아 해당 URL의 웹페이지(HTML)를 처리한다. 웹페이지 처리 결과로 다른 웹페이지에 대한 URL link와 이미지 등의 리소스 URL link를 추출한다. 추출된 모든 URL 링크는 Frontier로 전송한다. Monitor는 Frontier와 Agent의 동작상태 모니터링 하고 제어기능을 포함한다.
  10. 스케줄링을 나눠서 장기 스케줄링(Long-term Scheduler)과 단기 스케줄링(Short-term Scheduler)로 구분할 수 있다. 장기 스케줄링 - 품질과 신선도 평가에 따라 다음 방문할 페이지를 결정. 시간 간격 : 몇 시간 혹은 며칠 단기 스케줄링 - 공손도 정책 혹은 네트워크 사용 최적화에 따라 페이지를 재배정. 시간간격 : 몇 초나 몇 분 시간간격은 수집기에 설정된 대기 시간에 의존한다. 저장소를 세 부분으로 나눠서 (리치)텍스트, 링크, 메타데이터로 구분할 수 있다. 중점 수집기는 페이지 분류를 위한 텍스트를 사용하고 내려받기를 위해 URL을 서열화 한다.  일반 수집기는 메타데이터와 링크를 사용하여 어떤 페이지를 다음에 내려 받을지 결정한다. 
  11. 대역폭과 저장 용량과는 별도로 수집기의 구현은 많은 쟁점이 있다. 수집기가 여러 다른 시스템과 상호작용을 해야 하고 그 시스템들은 다양한 수준의 표준 준수와 서비스 품질을 가지고 있기 때문이다. 웹 수집에서 가장 큰 쟁점은 다중 자원으로부터 어떻게 페이지를 내려받느냐는 것이다
  12. . DNS와 웹 서버의 반응 시간이 매우 다르기 때문에 복잡하고 웹 서버 가동 시간도 보장받기가 어렵다. 며칠이나 몇 주 동안 멈추었다가 재가동하는 웹 서버가 많기 때문이다.  내려받은 이후에 중복이거나 근접중복으로 인식될 수 있지만.  하지만 비슷한 텍스트를 포함하는 URL을 인식하는 대부분의 규칙이 특정 서버 구현의 부산물이기 때문에 기본 파일(index.html과 같은) 이름을 제거하거나 전형적인 세션 아이디 매개변수, 쿠기기반 세션의 선호 정보 제거하는 방법을 사용하여 중복을 피한다. 
  13. 코딩 오류를 바로잡는 사전 과정도 필요함 많은 웹사이트에서 수집기가 존재하지 않는 페이지를 내려받으려 하면 서버는 미리 제작한 오류 페이지로 재전송하여 되돌려 주는데 오류 조건이라는 신호를 응답 할 때 실어 주지 않는다는 것이 문제다. 404는 페이지가 존재하지 않는 오류의 번호이다.  '소프트-404' 페이지는 검색엔진의 수집기에 손해를 입히는데 그 이유는 별 내용 없는 곳에 색인을 만들기 때문이다. 이 문제를 완화시키기 위해 몇몇 웹 수집기는 거의 확실히 존재하지 않을 만한 임의 형태의 URL을 요청하고 제대로 된 응답 코드를 받게되면 그 때 검증한다. 또한 소프트 404 페이지는 텍스트 분류기를 통해 이런 페이지가 표현하는 메시지와 연관된 특정 구나 키워드를 학습하여 자동으로 인지할 수 있다.
  14. 웹 수집은 더 나은 확장성과 장애 복구를 하기 위해서 다중 스레드를 통해 이루어져야 하며 매우 큰 문서모음에 대해서 분산처리를 해주어야 한다. 
  15.  ‘alice’의 hash값은 23이고, cache machine의 갯수인 n은 3이므로 mod 3 n의 값이 바뀌게 되고, 모든 Objecte들은 새로운 위치에 재할당되어야 한다. 이렇게 N이 바뀔 때 마다, 모든 Object를 재배치하는것은 시스템의 전체 performance를 크게 저하시킨다. . cache machine은 구간을 정하고 그 구간에는 많은 Object의 해시값을 가지고 있는다. 기존의 cache machine이 제거되면, 인접한 구간의 남아있는 cache machine이 제거된 구간을 맡게되고 다른 cache machine들은 영향을 받지 않는다. Performance는 O(log n).
  16. 웹을 수집하는 것을 하늘을 관찰하는 것과 닮았음. 우리가 바라보는 별들의 위치는 다른 시간 대의 별의 상태를 반영하게 되는데 마찬가지로 검색엔진에서 보고있는 페이지들은 수집기가 최신의 상태를 항상 반영하고 있지 않을 가능성이 있기 때문에 비유
  17. 대역 검색엔진의 수집기 같은 대규모 문서모음에 대해 운용되는 웹 수집기는 세 가지 다른 정책으로 수집기의 알고리즘을 정하는 것이 유용.
  18. 수집기는 방문할 다음 페이지를 신중하게 선택해야한다. 큰 규모의 수집은 고비용이기 때문에 수집기의 생산성을 최대화 시키고 할당된 대역폭 낭비를 피하기 위해서 효율적인 네트워크 자원 사용이 매우 중요하기 때문이다. 어떤 페이지를 수집할 지에 대해서 오프라인 제한과 온라인 선택 두가지 유형의 제약이 존재한다. 오프라인 제한은 이전에 설정되는 것이고 온라인 선택은 수집이 진행되며 계산되는 것이다. 
  19. PageRank와 BFS
  20. 웹은 매우 동적이기 때문에 웹을 수집하는 동안에도 많은 이벤트가 발생할 수 있다.
  21. 페이지 이벤트에 연관된 비용 함수. 이벤트를 탐지하지 못한 것에 연관된 비용이 있고, 그 결과로 페이지의 오래된 복사본을 가지게 된다.
  22. 수집기의 목적은 평균 신선도를 가능하면 높게 유지하거나 평균 나이를 가능하면 낮게 유지하는 것 어떤 연구가는 질적인 면에서 모든 페이지가 똑같이 중요하다고 여기는 모델을 고려해서, 두가지 재방문정책은 연구하였음 결과: 두 방법 모두 나쁨. 하지만 일률 정책이 최적화에 가까움.Freshness를 좀 더 잘 추정해야 된 다는 결론을 얻음. 평균 신선도의 경우 일률 정책이 더 좋음. 페이지가 너무 자주 바뀌면 수집기도 너무 빨리 재수집 시도해서 시간을 낭비하기 때문.
  23. 웹 수집기는 일반 서버에 많은 대역폭을 요구하여 서버 과부하를 일으키게 되는 문제가 발생할 수 있다. 또한 저작권 문제가 일어날 수 있다
  24. 로봇인식 – 웹 수집기 자신이 웹 서버에 자신을 인식시켜주는 것을 의미함. 로봇 배제 프로토콜 –페이지 자체에 메타-태그를 통해서 수집기에게 이 페이지를 색인하면 안되고 이 페이지에 포함된 링크를 따라가도 안 된다는 것을 표현한다. 또는 nocache 키워드를 사용해서 캐시를 사용자에게 보여주지 말 것을 지시할 수 있다.
  25. 과부하가 걸리거나 멀리 떨어진 웹 서버 접속을 하다 대역폭을 잃을 수 있다.
  26. 장기 스케줄링의 여러 전략들을 비교한 것. 질적 측정으로 페이지 랭크를 사용했음. 질적 측정으로 사용되면 전지적 전략이 다른 두 전략보다 좋음