ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 웹 크롤러 설계
    Project 2023. 7. 12. 18:17
    728x90

    웹 크롤러

    - 검색 엔진에서 널리쓰는 기술로, 웹에 새로 올라오거나 갱신된 콘텐츠를 찾아내는 것이 주된 목적

    - 콘텐츠는 웹 페이지일수도, 이미지나 비디오 또는 PDF 파일일 수도 있다.

    1. Search Engine Indexing

    -  웹 페이지를 모아 검색 엔진을 위한 로컬 인덱스를 만든다

    - GoogleBot : 구글 검색 엔진이 사용하는 크롤러

    2. Web Archiving

    - 나중에 사용할 목적으로 장기보관하기 위해 웹에서 정보를 모으는 절차

    - 많은 국립 도서관이 크롤러를 돌려 웹사이트를 아카이빙

    3. Web Mining

    - 인터넷에서 유용한 지식을 도출해 낼 수 있는 것

    - 유명 금융 기업들은 크롤러를 사용해 주주총회 자료나 연차 보고서를 다운받아 기업의 핵심 사업 방향을 제시

    4. Web Monitoring

    - 크롤러를 사용하면 인터넷에서 저작권이나 상표권이 침해되는 사례를 모니터링

    - Digimarc : 웹 크롤러를 사용해 해적관 저작물을 찾아내서 보고

     

    @웹 크롤러의 기본 알고리즘

    1. URL 집합이 입력으로 주어지면, 해당 URL들이 가리키는 모든 웹 페이지를 다운로드

    2. 다운받은 웹 페이지에서 URL들을 추출

    3. 추출된 URL 들을 다운로드할 URL들을 다운로드할 URL 목록에 추가하고 위의 과정을 처음부터 반복

    [웹 크롤러 구성시 유의사항]

    * 규모 확장성 : 병행성을 활용하면 보다 효과적으로 웹 크롤링을 할 수 있다.

    * 안정성 : 잘못 작성된 HTML, 아무 반응이 없는 서버, 장애, 악성 코드가 붙어 있는 링크 등이 좋은 예시 + 비정상적 입력이나 환경에 잘 대응할 수 있어야 한다.

    * 예절 : 크롤러는 수집 대상 웹 사이트에 짧은 시간동안 너무 많은 요청을 보내서는 안된다.

    * 확장성 : 새로운 형태의 콘텐츠를 지원하기가 쉬워야 한다. 예를 들어, 이미지 파일도 크롤링하고 싶다고 해보자. 이를 위해 전체 시스템을 새로 설계해야 한다면 곤란할 수 있다.

    [개략적 규모 추정]

    - 크롤러의 주된 용도는 무엇인가(검색엔진 인덱스 생성용 / 데이터 마이닝 / 그 외)

    - QPS : 매달 얼마나 많은 웹 페이지를 수집해야 하는가?

    Ex. 10억 개의 웹 페이지 수집 -> QPS = 10억/30일/24시간/3600초 = 대략 400page/ 초

    최대 QPS = 2*QPS = 800

    웹 페이지의 크기 평균은 500k라고 가정

    10억 페이지*500k = 500TB/월

    (1000TB = 1PB)

    - 새로 만들어진 웹 페이지나 수정된 웹 페이지도 고려해야 하는가?

    - 수집한 웹 페이지는 저장해야 하는가 ?

    - 중복된 컨텐츠는 어떻게 해야 하는가?

    [웹 크롤러 Workflow]

    1. 시작 URL들을 미수집 URL 저장소에 저장

    2. HTML 다운로더는 미수집 URL 저장소에서 URL 목록을 가져온다

    3. HTML 다운로더는 도메인 이름 변환기를 사용하여 URL의 IP 주소를 알아내고, 해당 IP 주소로접속하여 웨 페이지를 다운로드

    4. 콘텐츠 파서는 다운된 HTML 페이지를 파싱하여 올바른 형식을 갖춘 페이지인지 검증

    5. 콘텐츠 파싱과 검증이 끝나면 중복 컨텐츠인지 확인하는 절차 개시

    6. 중복 콘텐츠인지 확인하기 위해, 해당 페이지가 이미 저장소에 있는지 확인

    - 이미 저장소에 있는 콘텐츠인 경우 -> 버림

    - 저장소에 없는 콘텐츠인 경우 저장소에 저장한뒤 URL 추출기로 전달

    7. URL 추출기는 해당 HTML 페이지에서 링크를 골라낸다

    8. 골라낸 링크를 URL 필터로 전달

    9. 필터링이 끝나고 남은 URL만 중복 URL 판별 단계로 전달

    10. 이미 처리한 URL 인지 확인하기 위해 URL 저장소에 보관된 URL인지 살피고, 이미 저장소에 있는 URL은 버린다

    11. 저장소에 없는 URL은 URL 저장소에 저장할 뿐 아니라 미수집 URL 저장소에도 전달

    [이외 주의할 점]

    - DFS vs BFS

    - 미수집 URL 저장소

    - HTML 다운로더

    - 안정성 확보 전략

    - 확장성 확보 전략

    - 문제 있는 콘텐츠 감지 및 회피 전략

     

    출처 : <가상 면접 사례로 배우는 대규모 시스템 설계 기초> - 웹 크롤링

    728x90

    'Project' 카테고리의 다른 글

    [Parsing] Scrapy를 활용하여 웹 스크래핑 하기  (0) 2023.07.09
    PySpider  (0) 2023.07.08
    웹 크롤링 데이터를 MySQL에 저장하기  (0) 2023.07.03
    Requests 알아보기  (0) 2023.06.28
    Client와 Server, REST API, JSON  (0) 2023.06.26
Designed by Tistory.