웹 크롤링
웹 사이트에 있는 데이터를 추출해서 사용하기 위한 목적
으로 홈페이지 내용을 수집하고, 추출하는 것
특정한 규칙
에 맞춰서 웹 페이지에 방문해서 내용에 포함된 데이터를 가져오는 것이다.
요약 : 사용자가 검색해서 결과로 나온 정보를 노트에 써놓는 것과 비슷한 행동을 프로그램이 반복해서 저장하도록 만드는 것
웹 크롤러 봇
스파이더, 검색 엔진 봇이라고도 한다.
인터넷에서 콘텐츠를 다운로드하고 색인을 생성하여 웹 페이지가 무엇에 대한 것인지를 파악하고,
필요할 때 정보를 추출하기 위해 존재한다.
검색 엔진은 웹 크롤러가 수집한 데이터에 검색 알고리즘을 적용한다.
- 예를 들어, 구글에서 검색 키워드를 입력하면 보여지는 결과는 이러한 방식으로 수집되어 보여지는 것!
웹 크롤러 봇은, 마치 도서관 사서와 비슷한데,
사서의 역할은 책을 제목이나 줄거리 등 일부를 통해 주제별로 분리하여 두고, 도서관 이용자는 이를 이용할 수 있다.
웹 크롤러 봇은, 해당 페이지에 들어가서 관련된 정보를 모두 조회하기 위해서
태그와 같은 하이퍼링크를 통해 page to page로 이동하며 동작한다.
이걸로 미루어 보면, 웹 크롤러 봇이 닿지 못하는 부분은 검색 엔진에 검색해도 노출되지 않을 것임을 예상할 수 있다.
-> 정보원의 추정에 따르면, 인터넷 자료의 4-70% 정도만 검색용으로 색인화된다고 한다.
검색 색인화
검색 색인화란, 정보를 필요로 하는 사람(검색을 시도하는 사람)에게 제공할 목적으로 검색 엔진이 만든 것이다.
예를 들면, 도서관에서 책을 찾고자 할 때 사용하는 J153와 같은 라벨이 색인화라고 할 수 있다.
색인화는 주로 페이지에 대한 메타 데이터에 중점을 두는데,
대부분 검색 엔진이 페이지 색인화 시 해당 페이지의 모든 단어를 추가하며,
사용자가 그 단어를 검색할 시 그 단어의 모든 페이지 색인을 검토해 가장 관련성이 높은 페이지부터 보여준다.
메타 데이터란, 데이터를 설명하는 데이터로 웹사이트에 대한 설명을 담은 데이터 등을 의미한다.
보통 이 메타 데이터는 검색 결과에 요약과도 비슷한 미리보기 형식으로 표시되는 경우가 많다.
웹 크롤러의 동작 방식
웹 브라우저에서 동작하는 방식도 있지만,
브라우저에서 사용자처럼 HTTP 요청을 만들어서 보내고 응답으로 받은 페이지 내용을 분석하는 방식을 주로 사용한다.
웹 크롤러 봇은 현재 웹사이트의 URL부터 탐색을 시작한다.
해당 URL에서 웹페이지를 크롤링 한 뒤, 크롤링하며 발견한 다른 URL들을 모두 다음 목록에 추가하며,
순차적으로 다음 목록들을 계속 탐색해 나간다.
이 과정이 무한히 이어질 수 있는데, 웹 크롤러는 크롤링 페이지, 순서, 콘텐츠 업데이트 확인 등을 위해서
다시 크롤링 해야 하는 빈도등에 대해 선택적 정책들을 따른다.
선택적 정책
1. 상대적 중요성
웹 크롤러는 인터넷 전체를 크롤링 하지 않는다.
링크된 페이지 수, 방문자 등의 기준으로 크롤링할 페이지를 먼저 결정한다.
링크가 많거나, 방문자가 많은 페이지가 더 고품질의 정보를 포함할 가능성이 높기 때문이다.
2. 웹페이지 재방문
웹페이지 콘텐츠가 지속적으로 변경/삭제되거나 이동된다면, 방문해서 최신의 콘텐츠를 색인화해야 한다.
3. 로봇 제외 프로토콜
로봇에 기초하여 어떤 페이지를 크롤링 할 지 결정한다.
웹 페이지 탐색 전에 robots.txt 파일(호스트의 웹사이트나 응용 프로그램에 액세스하는 모든 로봇에 대한 규칙을 지정해둔 것)을 점검한다.
이 규칙이 로봇이 크롤링 할 수 있는 페이지, 어떤 링크를 추적할 지 등을 정의한다.
(ex. 리액트를 create-react-app을 이용해 만들어 본 사용자는, robots.txt 파일을 본 적이 있을 것이다.)
웹 크롤러 봇이 언제나 웹페이지에 액세스 할 수 있어야 하는가?
웹 크롤러가 콘텐츠 색인을 할 때는 서버 자원을 요구한다.
- 웹 크롤러도 사용자와 마찬가지로, 서버에 자원을 요청하여 서버로부터 응답을 받으려 하기 때문이다.
이런 이유로 과도한 색인화는 서버에 부담을 줄 수 있겠다.
그러므로 콘텐츠 양, 페이지 수 등에 따라 색인화를 자주 허용하지는 않는 것이 웹사이트 운영자에게 더 유리할 수도 있다.
회사가 고객에게 별도의 링크를 준 경우엔, 웹사이트의 외부 접근을 원하지 않을 수도 있다.
- 예를 들면, 특정 고객 대상 마케팅 시에 대상 고객의 접속만을 원할 뿐, 다른 고객의 접근을 원하지 않을 수 있다.
이 때, "no index" 태그를 추가하거나, robots.txt 파일에 "disallow" 태그를 추가하여 검색엔진 노출을 막을 수 있다.
웹 크롤링과 웹 스크래핑의 차이점
웹 스크래핑
웹, 데이터, 콘텐츠 스크래핑은 봇이 허가 없이 웹사이트 콘텐츠를 다운로드 하는 경우이다.
이것은 보통 악의적인 의도가 있는 경우가 많다.
웹 스크래퍼는 목적을 둔 특정 페이지나 특정 웹사이트만을 추적하려 한다.
반면 웹 크롤러는 색인화를 목적으로 모든 링크를 따라가려 한다.
웹 스크래퍼는 웹 서버의 부하 등에 신경쓰지 않는다.
웹 크롤링은 robots.txt를 준수하고 웹 서버에 부담이 되지 않도록 요청을 제한하려 한다.
웹 크롤러와 검색엔진최적화(SEO)
Search Engine Optimization(SEO)는 검색 엔진 최적화를 의미한다.
웹사이트가 검색 엔진 결과의 상단에 위치하도록 콘텐츠를 검색 색인화에 맞게 준비하는 방식을 의미한다.
크롤러 봇이 크롤링 하지 않으면, 색인화되지 않고, 색인화되지 않은 자료는 검색결과에 표시되지 않으므로
웹 크롤러 봇을 차단하지 말아야 한다.
다양한 크롤러 봇의 사례
Google : Googlebot(Desktop + Mobile)
Bing : Bingbot
Yandex : yandex Bot
Baidu : Baidu Spider
이외에도 여러 봇들이 존재한다.
크롤링 시 주의사항
웹 크롤링은 법적으로 보호받을 수 있는 한계가 있기 때문에 주의
해야 한다.
개인적인 용도와 저작권법에서 보호하는 공정한 사용 범위 내에서만 사용해야 한다.
만약 스크래핑한 데이터를 다른 곳에 공개하거나, 웹 사이트를 공격하거나 저작권으로 보호하는 데이터를
수집하려는 의도를 갖고 하면 불법 행위로 간주된다.
참고한 사이트
https://www.cloudflare.com/ko-kr/learning/bots/what-is-a-web-crawler/
'Browser' 카테고리의 다른 글
비동기 작업 취소하기. "AbortController" (0) | 2022.07.24 |
---|---|
[CORS] 다른 출처간 CORS 에러 해결과 웹팩 개발 서버의 Proxy 설정 (1) | 2021.11.15 |