웹 크롤링 & 웹 스크래핑

seul_velog·2023년 9월 4일
0


검색엔진(Search Engine)

인터넷 상의 정보를 검색하여 사용자에게 제공하는 시스템 또는 소프트웨어를 의미한다. 사용자가 키워드나 문구를 입력하면, 검색 엔진은 이에 관련된 웹페이지나 다른 형태의 자료를 찾아서 사용자에게 결과로 보여준다.

검색 엔진의 주요 작동 원리

크롤링(Crawling)
검색 엔진의 로봇(또는 크롤러, 스파이더)이 웹을 무작위로 탐색하면서 웹 페이지의 내용을 수집한다.

인덱싱(Indexing)
수집된 웹 페이지의 내용을 분석하여 중앙 데이터베이스에 인덱싱한다. 이 과정에서 웹 페이지의 내용, 태그, 링크 구조 등 다양한 요소를 파악한다.

쿼리 처리(Query Processing)
사용자가 검색어를 입력하면 검색 엔진은 인덱싱된 데이터베이스에서 관련 정보를 검색한다.

랭킹(Ranking)
검색 결과는 종종 관련성, 품질, 사용자의 개인화된 설정 등 다양한 요소를 기반으로 순위를 매겨서 보여진다.


✍️ "중앙 데이터베이스에 인덱싱한다."
: 웹 크롤러가 수집한 웹 페이지 정보를 검색 엔진의 데이터베이스에 저장하고, 그 내용을 분석하여 검색을 용이하게 하기 위한 인덱스를 생성한다.

중앙 데이터베이스(Central Database)
: 검색 엔진들은 웹에서 수집한 정보를 저장하기 위한 방대한 규모의 데이터베이스를 운영한다. 이 데이터베이스는 "중앙 데이터베이스"라고 부르기도 하며, 여기에는 전 세계의 웹 페이지 내용, 링크 정보, 메타 데이터 등이 저장된다.

인덱싱 (Indexing)
: 웹 크롤러가 웹 페이지의 내용을 수집한 후, 해당 내용을 검색 엔진의 중앙 데이터베이스에 저장하게 된다. 이때, 효율적인 검색을 위해 웹 페이지의 내용을 분석하고 정리하는 과정을 '인덱싱'이라고 한다.

예를 들면, 한 웹 페이지에 '사과'라는 단어가 여러 번 등장한다면, 그 웹 페이지는 '사과'와 관련된 내용이 있을 확률이 높다. 검색 엔진은 이런 정보를 바탕으로 '사과'라는 키워드와 해당 웹 페이지를 연결하는 인덱스를 생성한다.
사용자가 '사과'라는 검색어로 검색을 할 경우, 이 인덱스 정보를 바탕으로 관련된 웹 페이지를 빠르게 찾아 결과로 제공할 수 있다.😀




웹 크롤링 (Web Crawling)

웹 크롤링은 인터넷 상의 웹 페이지를 방문하면서 그 내용을 가져오는 것을 말한다. 크롤러는 (거미가 그물을 펼쳐나가는 것처럼) 웹 페이지의 링크를 따라 계속해서 다른 웹 페이지로 이동하면서 정보를 수집한다.

  • 웹 크롤링은 웹 페이지를 체계적이고 일관된 방식으로 (시스테마틱 하게) 탐색하며 정보를 수집하는 과정이다.
  • 크롤러(스파이더)라는 봇이 웹 사이트의 페이지들을 방문하며 링크를 따라 다니면서 웹 페이지의 내용을 다운로드한다.

사용 사례

  • 검색 엔진: 웹 페이지를 인덱싱하기 위해 사용한다.
    구글, 네이버, 다음 등의 검색 엔진들이 웹 페이지의 정보를 인덱싱하기 위해 크롤러를 사용한다.
  • 마케팅 리서치: 새로운 웹사이트나 블로그의 등장을 모니터링하기 위해 사용될 수 있다.
  • 콘텐츠 모니터링: 변경된 콘텐츠나 새로운 콘텐츠를 추적하기 위해 사용된다.



크롤러(스파이더)란?

크롤러(crawler) 또는 스파이더(spider)는 자동화된 소프트웨어로, 웹 페이지를 시스테마틱하게 탐색하면서 웹 페이지의 내용을 다운로드하는 데 사용된다고 한다.
그러므로 이것은 웹 검색 엔진에서 특히 중요한 역할을 한다!😀

크롤러의 주요 작동 원리

1) 시작 URL: 크롤러는 하나 또는 여러 개의 시작 URL로부터 작동을 시작
2) 페이지 다운로드: 시작 URL에 연결된 웹 페이지의 내용을 다운로드
3) 링크 파싱: 다운로드된 웹 페이지의 내용에서 다른 웹 페이지로의 링크(하이퍼링크)를 파싱(추출)
4) 다음 페이지로: 파싱된 링크를 통해 다음 웹 페이지로 이동하고, 그 페이지의 내용도 다운로드
5) 반복: 이 과정을 계속 반복하면서 인터넷 상의 수많은 웹 페이지를 탐색하고 정보를 수집

웹 검색 엔진

예를 들어 구글, 네이버, 다음 등의 웹 검색엔진 크롤러는 이 방식으로 웹 상의 수많은 페이지 정보를 수집하여 자체 데이터베이스에 저장한다. 이후 사용자가 검색 쿼리를 입력하면, 이 데이터베이스를 바탕으로 관련된 검색 결과를 빠르게 제공할 수 있는 것이다. 🧐




웹 스크래핑 (Web Scraping)

웹 스크래핑은 특정 웹 페이지에서 원하는 정보만을 추출하는 것을 말한다. 예를 들면, 온라인 쇼핑몰에서 상품의 이름과 가격 정보만을 따로 뽑아내는 것과 같은 행위이다.

  • 데이터 스크래핑은, 애플리케이션을 이용해 웹사이트에서 중요한 정보를 추출하는 과정을 말하는 웹 스크래핑에서 나타나는 경우가 많다.
  • 웹 스크래핑은 특정 웹 페이지에서 원하는 데이터를 추출하는 과정이다.
  • 웹 스크래핑 툴 또는 코드를 사용하여 웹 페이지의 내용에서 필요한 데이터를 추출하고 원하는 형식으로 저장할 수 있다.
  • 주식 시세, 날씨 정보, 온라인 쇼핑몰의 제품 가격 등 특정 정보를 주기적으로 수집하고자 할 때 웹 스크래핑을 사용한다.

사용 사례

  • 가격 스크래핑: 다양한 온라인 쇼핑몰에서 제품의 가격 정보를 수집한다. 이를 통해 자신들의 경쟁 우위를 만들 수 있다.
  • 데이터 분석: 웹사이트에서 데이터를 수집하여 시장 트렌드, 사용자의 선호도, 경쟁사 분석 등의 데이터 분석에 활용한다.
  • 재고 확인: 특정 상품의 재고 상황을 실시간으로 확인하기 위해 사용된다.
  • 콘텐츠 스크래핑: 콘텐츠에 의존하는 특정 제품 또는 서비스의 고유한 이점을 복제하기 위해 웹사이트에서 콘텐츠를 추출할 수 있다. 예를 들어, 리뷰에 의존하는 사이트에서는 경쟁업체가 모든 리뷰 콘텐츠를 스크래핑해 자신의 사이트에서 재생하고 오리지널 리뷰인 것처럼 가장하는 경우가 있을 수 있다.
  • 연락처 스크래핑 : 이메일 주소와 전화 번호를 일반 텍스트로 가지고 있는 웹사이트로부터 연락처 정보를 집계하여 악의적으로 이용할 수도 있다. 스팸과 스캠을 하는 사람들이 대상을 찾는 데 사용하기도 한다.

웹 스크래핑의 주요 절차

1) 스크래퍼 봇이라고 하는 정보를 빼내오는 데 사용되는 코드가 트겅 웹사이트에 HTTP GET 요청을 보낸다.
2) 웹사이트가 응답하면 스크래퍼는 HTML 문서를 분석해서 특정 패턴의 데이터를 찾는다.
3) 추출된 데이터는 스크래퍼 봇의 작성자가 설계한 특정 형식으로 변환된다.




웹 크롤링과 웹 스크래핑 차이점

웹 크롤링

  • 웹 사이트 전체를 탐색하고 정보를 수집하는 데 초점을 둔다.
  • 자신의 목적을 표시하며 웹사이트가 자신을 다른 것으로 생각하도록 속이려 하지 않는다.

웹 스크래핑

  • 특정 웹 페이지에서 원하는 데이터만을 타겟으로하여 그 정보만을 추출하는 것에 초점을 둔다.
  • 웹 브라우저인 것처럼 가장한다.
  • 스크래퍼 봇은 양식 작성 같은 고급 작업을 하거나 웹사이트의 특정 부분에 도달하기 위한 행동을 수행하는 경우가 있다.
  • 웹 크롤러에게 어떤 데이터를 분석하고 사이트의 어떤 영역은 피하라고 말하기 위해 특별히 설계된 정보가 담긴 robots.txt 파일을 무시하는 것이 일반적이다. 스크래퍼는 특정 콘텐츠를 가져오도록 설계되었으므로, 무시하도록 명시된 콘텐츠를 가져오도록 설계되는 경우가 있다.




사용시 주의사항 ❗️

  • 웹사이트의 이용 약관, robots.txt, 저작권 및 기타 법적 사항을 고려하여 항상 적절하게 사용해야 한다.
  • 크롤러는 웹 페이지의 robots.txt 파일에 지정된 규칙을 준수해야 한다. 이 파일은 웹사이트가 크롤러에게 어떤 페이지를 크롤링해도 좋고, 어떤 페이지는 크롤링해서는 안 되는지의 지침을 제공한다.

문제가 되는 크롤링은?

  • 수집한 데이터의 상업적 이용
  • 크롤링 과정에서 해당 서버의 문제 야기
  • 수집한 데이터가 사용자의 민감한 정보인지
  • 사이트의 이용방침, 의사(ex. robots.txt, 이용목적)을 위반하지 않는지

크롤링 & 스크래핑과 robots.txt

  • 만약 단 하나의 페이지에서 특정 정보를 가져왔다고(스크래핑) 가정하더라도 robots.txt 지침을 따라야 할까? 🤔
    👉 robots.txt 파일은 웹 크롤링과 스크래핑의 범위에 관계없이 웹사이트의 관리자가 웹 크롤러나 스파이더에게 해당 사이트의 어느 부분을 방문하거나 인덱싱하면 안 되는지를 알려주는 파일이다. 따라서 하나의 페이지만 스크래핑한다고 하더라도 해당 웹사이트의 robots.txt 파일에 따라야한다고 한다.

  • robots.txt
    특정 User-agent(웹 크롤러의 식별자)에 대해 어떤 경로를 방문하면 안 되는지, 혹은 얼마나 자주 방문할 수 있는지 등의 지침이 명시되어 있을 수 있다.

  • Beautiful Soup나 Selenium 같은 도구로 스크래핑을 할 때, 이러한 지침을 자동으로 따르지는 않는다. 따라서 웹스크래퍼나 웹크롤러를 개발할 때는 robots.txt 파일을 직접 확인하고 해당 지침을 준수해야 한다고! 😤

  • User-agent
    User-agent는 특정 웹 크롤러나 봇을 식별하는 문자열이다. 예를 들어 Googlebot은 Google의 웹 크롤러를 가리킨다.

  • Disallow
    robots.txt 파일에서 Disallow 항목은 웹 크롤러나 봇이 접근해서는 안 되는 경로를 지정한다.





reference
crawling_vs_scraping
what-is-data-scraping
crawling 제약

profile
기억보단 기록을 ✨

0개의 댓글