검수요청.png검수요청.png

"웹크롤러"의 두 판 사이의 차이

위키원
이동: 둘러보기, 검색
8번째 줄: 8번째 줄:
  
 
*'''각 웹페이지의 상대적 중요성''': 대부분의 웹 크롤러는 공개된 인터넷 전체를 크롤링하지 않으며, 그렇게 하려고 하지도 않는다. 그 대신, 해당 페이지에 중요한 정보가 포함될 가능성을 나타내는 요소인 해당 페이지를 링크하고 있는 다른 페이지 수, 페이지 방문자 수 등의 요소를 기준으로 먼저 크롤링할 페이지를 결정한다.다른 웹페이지에서 많이 언급하며 방문객이 많은 웹페이지에는 권위 있는 고품질의 정보가 있을 가능성이 크므로, 검색 엔진이 색인을 작성하는 것이 특히 중요하다. 대출이 많은 도서는 다수를 보유하는 도서관과 마찬가지이다.
 
*'''각 웹페이지의 상대적 중요성''': 대부분의 웹 크롤러는 공개된 인터넷 전체를 크롤링하지 않으며, 그렇게 하려고 하지도 않는다. 그 대신, 해당 페이지에 중요한 정보가 포함될 가능성을 나타내는 요소인 해당 페이지를 링크하고 있는 다른 페이지 수, 페이지 방문자 수 등의 요소를 기준으로 먼저 크롤링할 페이지를 결정한다.다른 웹페이지에서 많이 언급하며 방문객이 많은 웹페이지에는 권위 있는 고품질의 정보가 있을 가능성이 크므로, 검색 엔진이 색인을 작성하는 것이 특히 중요하다. 대출이 많은 도서는 다수를 보유하는 도서관과 마찬가지이다.
*'''웹페이지 재방문''': 웹 콘텐츠는 지속적으로 변경되거나 삭제되고 새로운 위치로 이동한다. 웹 크롤러는 정기적으로 페이지를 다시 방문하여 최신 버전의 콘텐츠를 색인화해야 합니다.<ref> CLOUDFLARE 공식 홈페이지 -〈[https://www.cloudflare.com/ko-kr/learning/bots/what-is-a-web-crawler/ What is a web crawler? | How web spiders work]〉 </ref>
+
*'''웹페이지 재방문''': 웹 콘텐츠는 지속적으로 변경되거나 삭제되고 새로운 위치로 이동한다. 웹 크롤러는 정기적으로 페이지를 다시 방문하여 최신 버전의 콘텐츠를 색인화해야 합니다.<ref name="CLOUDFLARE"> CLOUDFLARE 공식 홈페이지 -〈[https://www.cloudflare.com/ko-kr/learning/bots/what-is-a-web-crawler/ What is a web crawler? | How web spiders work]〉 </ref>
  
 
==종류==
 
==종류==
16번째 줄: 16번째 줄:
  
 
*GM Crawl, PolyBot, RBSE, Swiftbot, WebFountain, WebRACE, 월드 와이드 웹 웜, Yahoo! Slurp 등<ref name="웹 크롤러"></ref>
 
*GM Crawl, PolyBot, RBSE, Swiftbot, WebFountain, WebRACE, 월드 와이드 웹 웜, Yahoo! Slurp 등<ref name="웹 크롤러"></ref>
 +
 +
===주요 검색 엔진 봇===
 +
*'''Google''': Googlebot, 실제는 데스크톱 검색용인 Googlebot Desktop 및 과 모바일 검색용인 Googlebot Mobile의 두 가지 크롤러이다.
 +
*'''Bing''':Bingbot
 +
*'''Yandex''': Yandex Bot, 러시아 검색 엔진이다.
 +
*'''Baidu''': Baidu Spider, 중국 검색 엔진이다.<ref name="CLOUDFLARE"></ref>
  
 
===오픈 소스 크롤러===
 
===오픈 소스 크롤러===
40번째 줄: 46번째 줄:
 
[[크롤링]](crawling) 또는 [[스크레이핑]](scraping) 은 웹 페이지를 가져와서 데이터를 추출해 내는 방법 또는, 인터넷에서 존재하는 데이터를 컴퓨터 프로그램을 통하여 자동화된 방법으로 웹에서 데이터를 수집하는 모든 작업을 말한다. 크롤링은 많은 사람들이 스크랩핑과 혼용하여 사용하고 있지만, 사실은 그 의미가 상이한 용어다. 크롤링은 데이터를 수집하고 분류하는 것을 의미하며, 주로 인터넷 상의 [[html]], 문서 등의 웹페이지를 수집해서 분류하고 저장하는 것을 뜻한다. 엄밀히 말해, 크롤링은 데이터의 수집 보다는 여러 웹페이지를 돌아다닌다는 뜻이 강하며, 데이터가 어디에 저장되어 있는지 위치에 대한 분류 작업이 크롤링의 주요 목적이라 할 수 있다.<ref name="삼성디스플레이 뉴스룸"> 삼성디스플레이 뉴스룸 공식 홈페이지 -〈[https://news.samsungdisplay.com/22907/ 원하는 정보만 수집한다! 크롤링과 빅데이터 분석 활용]〉, 2020-04-22 </ref> 이렇게 크롤링하는 소프트웨어를 크롤러라고 한다.세상에는 많은 양, 다양항 데이터가 존재한다. 그렇기 때문에 크롤링도 다양한 분야에서 활용할 수 있다. 어떠한 기업에서는 크롤링 담당 분서가 따로 존재한다고 한다. 예를들면 마케팅과 관련하여 개선점을 파악하고 싶을때 웹상에 존재하는 상품들의 후기, 평점등을 크롤링하여 문제점을 파악하고 개선점을 찾을 수 있다.<ref name="Jaaaa_mj "> Jaaaa_mj, 〈[https://jaaamj.tistory.com/101 크롤링 종류(정적 VS 동적)]〉, 《티스토리》, 2021-01-17 </ref> 파싱은 프로그램 언어를 문법에 맞게 분석해 내는 것인데, 어떤 웹페이지의 데이터를 사용자가 원하는 형식, 즉 일정한 패턴으로 추출해 어떠한 정보를 만들어 내는 것을 의미한다. 어느 위치에 저장된 데이터에 접근을 했다면, 이 데이터를 원하는 형태로 가공하는 작업이 주요 목적이라고 생각하면 된다. 종합하여, 언급한 각각의 작업을 수행하는 프로그램을 크롤러, [[파서]](parser), [[스크래퍼]](scraper) 등으로 부른다. 여러 자료를 보면 크롤링, 스크랩핑 그리고 파싱은 인터넷에서 프로그램을 이용해 자료를 추출하는 작업을 의미하며, 종종 혼용해서 쓰는 경우가 많다. 전문 개발자가 아니라면 정확하게 구분 할 필요는 없지만, 기본적으로 다소 상이한 개념에 대한 이해 정도는 필요하다.<ref name="삼성디스플레이 뉴스룸"></ref>
 
[[크롤링]](crawling) 또는 [[스크레이핑]](scraping) 은 웹 페이지를 가져와서 데이터를 추출해 내는 방법 또는, 인터넷에서 존재하는 데이터를 컴퓨터 프로그램을 통하여 자동화된 방법으로 웹에서 데이터를 수집하는 모든 작업을 말한다. 크롤링은 많은 사람들이 스크랩핑과 혼용하여 사용하고 있지만, 사실은 그 의미가 상이한 용어다. 크롤링은 데이터를 수집하고 분류하는 것을 의미하며, 주로 인터넷 상의 [[html]], 문서 등의 웹페이지를 수집해서 분류하고 저장하는 것을 뜻한다. 엄밀히 말해, 크롤링은 데이터의 수집 보다는 여러 웹페이지를 돌아다닌다는 뜻이 강하며, 데이터가 어디에 저장되어 있는지 위치에 대한 분류 작업이 크롤링의 주요 목적이라 할 수 있다.<ref name="삼성디스플레이 뉴스룸"> 삼성디스플레이 뉴스룸 공식 홈페이지 -〈[https://news.samsungdisplay.com/22907/ 원하는 정보만 수집한다! 크롤링과 빅데이터 분석 활용]〉, 2020-04-22 </ref> 이렇게 크롤링하는 소프트웨어를 크롤러라고 한다.세상에는 많은 양, 다양항 데이터가 존재한다. 그렇기 때문에 크롤링도 다양한 분야에서 활용할 수 있다. 어떠한 기업에서는 크롤링 담당 분서가 따로 존재한다고 한다. 예를들면 마케팅과 관련하여 개선점을 파악하고 싶을때 웹상에 존재하는 상품들의 후기, 평점등을 크롤링하여 문제점을 파악하고 개선점을 찾을 수 있다.<ref name="Jaaaa_mj "> Jaaaa_mj, 〈[https://jaaamj.tistory.com/101 크롤링 종류(정적 VS 동적)]〉, 《티스토리》, 2021-01-17 </ref> 파싱은 프로그램 언어를 문법에 맞게 분석해 내는 것인데, 어떤 웹페이지의 데이터를 사용자가 원하는 형식, 즉 일정한 패턴으로 추출해 어떠한 정보를 만들어 내는 것을 의미한다. 어느 위치에 저장된 데이터에 접근을 했다면, 이 데이터를 원하는 형태로 가공하는 작업이 주요 목적이라고 생각하면 된다. 종합하여, 언급한 각각의 작업을 수행하는 프로그램을 크롤러, [[파서]](parser), [[스크래퍼]](scraper) 등으로 부른다. 여러 자료를 보면 크롤링, 스크랩핑 그리고 파싱은 인터넷에서 프로그램을 이용해 자료를 추출하는 작업을 의미하며, 종종 혼용해서 쓰는 경우가 많다. 전문 개발자가 아니라면 정확하게 구분 할 필요는 없지만, 기본적으로 다소 상이한 개념에 대한 이해 정도는 필요하다.<ref name="삼성디스플레이 뉴스룸"></ref>
  
==크롤링 종류==
+
===크롤링 종류===
===정적 크롤링===
+
====정적 크롤링====
 
[[정적 크롤링]]은 정적인 데이터를 수집하는 방법을 말한다. 정적인 데이터란 변하지 않는 데이터를 의미합니다. 즉 한 페이지 안에서 원하는 정보가 모두 드러날때 정적 데이터라고 할 수 있다. 예를 들면, 로또 로또 번호 7개를 크롤링 하고 싶다고 한다면 보이는 화면에서 그 값이 모두 나타나 있다. 그렇기 때문에 한 페이지 안에 원하는 정보가 모두 드러난 경우 인 정적 크롤링에 해당된다. 정적 크롤링은 한 페이지 내에서 모든 작업이 이루어지기 때문에 속도가 매우 빠르다는 장점을 가진다.<ref name="Jaaaa_mj "></ref>
 
[[정적 크롤링]]은 정적인 데이터를 수집하는 방법을 말한다. 정적인 데이터란 변하지 않는 데이터를 의미합니다. 즉 한 페이지 안에서 원하는 정보가 모두 드러날때 정적 데이터라고 할 수 있다. 예를 들면, 로또 로또 번호 7개를 크롤링 하고 싶다고 한다면 보이는 화면에서 그 값이 모두 나타나 있다. 그렇기 때문에 한 페이지 안에 원하는 정보가 모두 드러난 경우 인 정적 크롤링에 해당된다. 정적 크롤링은 한 페이지 내에서 모든 작업이 이루어지기 때문에 속도가 매우 빠르다는 장점을 가진다.<ref name="Jaaaa_mj "></ref>
  
===동적 크롤링===
+
====동적 크롤링====
 
[[동적 크롤링]]은 동적인 데이터를 수집하는 방법을 말한다. 동적인 데이터란 입력, 클릭, 로그인 등과 같이 페이지 이동이 있어야 보이는 데이터를 말한다. 정적크롤링 수집하는 속도가 느리다는 단점이 있지만 더 많은 정보를 수집할 수 있다는 장점이 있다. 예를 들어, 메일함에 있는 메일 제목데이터를 수집하고 싶다고 생각을 해봤을때, 그렇기 위해서는 로그인과정을 거친 후 메일함에 들어가야 하는 동적인 과정이 필요하다. 이러한 경우가 바로 동적 크롤링이다.<ref name="Jaaaa_mj "></ref>
 
[[동적 크롤링]]은 동적인 데이터를 수집하는 방법을 말한다. 동적인 데이터란 입력, 클릭, 로그인 등과 같이 페이지 이동이 있어야 보이는 데이터를 말한다. 정적크롤링 수집하는 속도가 느리다는 단점이 있지만 더 많은 정보를 수집할 수 있다는 장점이 있다. 예를 들어, 메일함에 있는 메일 제목데이터를 수집하고 싶다고 생각을 해봤을때, 그렇기 위해서는 로그인과정을 거친 후 메일함에 들어가야 하는 동적인 과정이 필요하다. 이러한 경우가 바로 동적 크롤링이다.<ref name="Jaaaa_mj "></ref>
  
==동적 크롤링과 정적 크롤링 차이점==
+
====동적 크롤링과 정적 크롤링 비교====
  
 
*'''연속성''': 정적 크롤링은 주소를 통해 단발적으로 접근하지만, 동적 크롤링은 브라우저를 사용하여 연속적으로 접근한다.
 
*'''연속성''': 정적 크롤링은 주소를 통해 단발적으로 접근하지만, 동적 크롤링은 브라우저를 사용하여 연속적으로 접근한다.
54번째 줄: 60번째 줄:
 
*'''라이브러리''': 정적 크롤링은 [[requests]], [[BeautifulSoup]]을 사용하며, 동적 크롤링은 [[selenium]], [[chromedriver]]를 사용한다.<ref name="Jaaaa_mj "></ref>
 
*'''라이브러리''': 정적 크롤링은 [[requests]], [[BeautifulSoup]]을 사용하며, 동적 크롤링은 [[selenium]], [[chromedriver]]를 사용한다.<ref name="Jaaaa_mj "></ref>
  
==크롤링 대상==
+
===크롤링 대상===
 
크롤링의 주요 대상은 다양한 형태로 존재하는 데이터이다. 데이터는 앞서 언급한 바와 같이, 데이터 생성 스타일에 따라, 정형, 반정형 그리고 비정형 데이터로 구분되기도 하지만, 데이터를 생산하는 주체에 따라 기업 혹은 기관/조직과 사용자가 생성하는 데이터로 분류할 수 있다. 조직이 생성하는 데이터는 언론이 제공하는 뉴스와 방송영상, 민간기업이 제공하는 제품관련 정보, 영화·음악·게임 등의 미디어 산업체가 생산하는 콘텐츠 형 데이터 등이 있다. 사용자에 의해 생성되는 데이터는 서비스와 제품 소비에 의해 자동적으로 만들어진 데이터(뉴스 기사를 읽은 횟수, 온라인 쇼핑 웹사이트 방문자 수 등)와 뉴스 댓글, 상품평, 메신저·[[블로그]]·[[온라인 카페]]·[[유튜브]]·SNS 내 활동에 의해 생산된 데이터를 포함한다. 이러한 데이터는 사용자 단말을 통하여 읽을 수 있는 데이터이므로, 크롤링이나 스크랩핑 방법을 사용하여 수집할 필요가 있다.
 
크롤링의 주요 대상은 다양한 형태로 존재하는 데이터이다. 데이터는 앞서 언급한 바와 같이, 데이터 생성 스타일에 따라, 정형, 반정형 그리고 비정형 데이터로 구분되기도 하지만, 데이터를 생산하는 주체에 따라 기업 혹은 기관/조직과 사용자가 생성하는 데이터로 분류할 수 있다. 조직이 생성하는 데이터는 언론이 제공하는 뉴스와 방송영상, 민간기업이 제공하는 제품관련 정보, 영화·음악·게임 등의 미디어 산업체가 생산하는 콘텐츠 형 데이터 등이 있다. 사용자에 의해 생성되는 데이터는 서비스와 제품 소비에 의해 자동적으로 만들어진 데이터(뉴스 기사를 읽은 횟수, 온라인 쇼핑 웹사이트 방문자 수 등)와 뉴스 댓글, 상품평, 메신저·[[블로그]]·[[온라인 카페]]·[[유튜브]]·SNS 내 활동에 의해 생산된 데이터를 포함한다. 이러한 데이터는 사용자 단말을 통하여 읽을 수 있는 데이터이므로, 크롤링이나 스크랩핑 방법을 사용하여 수집할 필요가 있다.
  
==크롤링 방법==
+
===크롤링 방법===
 
크롤링을 하는 방법에는 크게 연구자가 직접 코드를 작성하는 경우와 데이터를 수집하고자 하는 사이트 혹은 회사에서 제공하는 [[API]](application programming interface)를 사용하는 방법이 있다. API라 함은 다양한 의미를 갖고 있지만, 크롤링의 경우에는 사용자에게 데이터를 쉽게 제공하기 위한 툴이라 할 수 있다. API를 사용하다 보면, 빠른 시간에 정제된 형태의 데이터를 수집할 수 있고, 데이터를 소유하고 있는 기업에서 제공하는 툴이기 때문에 데이터 사용에 따른 법적·윤리적 문제가 거의 없지만 최소한의 프로그래밍은 필요하다.직접 크롤링 명령어를 작성해서 데이터를 수집하는 경우는 크게, 데이터를 수집하려는 사이트에서 API를 제공하지 않는 경우, API를 제공하더라도 API를 통하여 원하는 데이터를 수집 할 수 없는 경우도 발생한다. 또한, 크롤링을 하고자 하는 정보가 웹페이지의 소스 코드에 담겨 있지 않는 경우에는 [[요소검사]](network inspection)이나 [[셀레니움]](selenium)과 같은 [[헤드리스 브라우저]](headless browser)를 사용할 수도 있다.<ref name="삼성디스플레이 뉴스룸"></ref>
 
크롤링을 하는 방법에는 크게 연구자가 직접 코드를 작성하는 경우와 데이터를 수집하고자 하는 사이트 혹은 회사에서 제공하는 [[API]](application programming interface)를 사용하는 방법이 있다. API라 함은 다양한 의미를 갖고 있지만, 크롤링의 경우에는 사용자에게 데이터를 쉽게 제공하기 위한 툴이라 할 수 있다. API를 사용하다 보면, 빠른 시간에 정제된 형태의 데이터를 수집할 수 있고, 데이터를 소유하고 있는 기업에서 제공하는 툴이기 때문에 데이터 사용에 따른 법적·윤리적 문제가 거의 없지만 최소한의 프로그래밍은 필요하다.직접 크롤링 명령어를 작성해서 데이터를 수집하는 경우는 크게, 데이터를 수집하려는 사이트에서 API를 제공하지 않는 경우, API를 제공하더라도 API를 통하여 원하는 데이터를 수집 할 수 없는 경우도 발생한다. 또한, 크롤링을 하고자 하는 정보가 웹페이지의 소스 코드에 담겨 있지 않는 경우에는 [[요소검사]](network inspection)이나 [[셀레니움]](selenium)과 같은 [[헤드리스 브라우저]](headless browser)를 사용할 수도 있다.<ref name="삼성디스플레이 뉴스룸"></ref>
  
==크롤링 후 분석 방법==
+
===크롤링 후 분석 방법===
 
크롤링한 대용량 데이터를 엑셀에 저장하고, 아래에 기술할 다양한 [[툴]]들을 이용하여 수집한 기사와 댓글 데이터를 분석하여, 궁극적으로 데이터 내 담겨 있는 함의를 도출할 수 있다.
 
크롤링한 대용량 데이터를 엑셀에 저장하고, 아래에 기술할 다양한 [[툴]]들을 이용하여 수집한 기사와 댓글 데이터를 분석하여, 궁극적으로 데이터 내 담겨 있는 함의를 도출할 수 있다.
  
67번째 줄: 73번째 줄:
 
#텍스트 마이닝: [[텍스트 마이닝]](text mining)은 TF와 TF-IDF 분석을 발전시킨 것으로, 텍스트 형태로 이루어진 비정형 데이터들을 자연어 처리 방식을 이용하여 정보를 추출하거나 연계성을 파악하는 기법이다. 웹 문서에서 특정 주제어와 매칭되는 단어를 찾아 수를 부여하는 [[인덱싱]](indexing) 검색 기법에서 발전되어 왔으며, 점차 특정 주제어나 문맥을 기반으로 데이터의 숨은 의미를 탐색하는 데 활용되고 있다. 텍스트 마이닝이 두드러지는 분야는 뉴스 기사 분석으로, 이를 활용하면 텍스트의 문맥에 따라 쟁점을 파악하고 텍스트 간 연계를 분석할 수 있다는 장점이 있다.‘[[연관어 분석]](association keyword analysis)’ 혹은 ‘[[의미망 분석]](semantic network analysis)’은 텍스트 마이닝의 한 종류이다. 관심 주제어를 포함한 대상 문서에서 함께 언급된 주제어를 추출하여 관심 주제어와 어떠한 토픽들이 연결되는 지 분석할 때 사용한다. 예컨대, 하나의 뉴스 기사에서 동시 출현한 용어의 쌍을 추출하고 전체 문서집합에서 주제어의 쌍별 발생 빈도와 연결 관계를 분석하면, 언론 기사 상의 주요 관심 토픽과 그 연계성의 변화를 추적 할 수 있다. 또한 주제어를 특정 토픽 별로 분류한 후 연관어 분석을 실시하면 주요 쟁점 간의 관련성을 구조적으로 파악하기에 용이하다. TF와 TF-IDF 분석을 통하여 언론이 자주 언급하는 의제 혹은 주요 이슈를 간단하게 추출할 수 있으며, 추출된 단어가 내재하는 감성적인 긍·부정 의미를 파악하여, 특정 아젠다에 대한 언론이 바라보는 시각 및 관점, 즉 프레임을 이해하는 데 도움이 된다.<ref name="웹 크롤러"></ref>
 
#텍스트 마이닝: [[텍스트 마이닝]](text mining)은 TF와 TF-IDF 분석을 발전시킨 것으로, 텍스트 형태로 이루어진 비정형 데이터들을 자연어 처리 방식을 이용하여 정보를 추출하거나 연계성을 파악하는 기법이다. 웹 문서에서 특정 주제어와 매칭되는 단어를 찾아 수를 부여하는 [[인덱싱]](indexing) 검색 기법에서 발전되어 왔으며, 점차 특정 주제어나 문맥을 기반으로 데이터의 숨은 의미를 탐색하는 데 활용되고 있다. 텍스트 마이닝이 두드러지는 분야는 뉴스 기사 분석으로, 이를 활용하면 텍스트의 문맥에 따라 쟁점을 파악하고 텍스트 간 연계를 분석할 수 있다는 장점이 있다.‘[[연관어 분석]](association keyword analysis)’ 혹은 ‘[[의미망 분석]](semantic network analysis)’은 텍스트 마이닝의 한 종류이다. 관심 주제어를 포함한 대상 문서에서 함께 언급된 주제어를 추출하여 관심 주제어와 어떠한 토픽들이 연결되는 지 분석할 때 사용한다. 예컨대, 하나의 뉴스 기사에서 동시 출현한 용어의 쌍을 추출하고 전체 문서집합에서 주제어의 쌍별 발생 빈도와 연결 관계를 분석하면, 언론 기사 상의 주요 관심 토픽과 그 연계성의 변화를 추적 할 수 있다. 또한 주제어를 특정 토픽 별로 분류한 후 연관어 분석을 실시하면 주요 쟁점 간의 관련성을 구조적으로 파악하기에 용이하다. TF와 TF-IDF 분석을 통하여 언론이 자주 언급하는 의제 혹은 주요 이슈를 간단하게 추출할 수 있으며, 추출된 단어가 내재하는 감성적인 긍·부정 의미를 파악하여, 특정 아젠다에 대한 언론이 바라보는 시각 및 관점, 즉 프레임을 이해하는 데 도움이 된다.<ref name="웹 크롤러"></ref>
  
 +
===웹 크롤링과 웹 스크래핑의 차이점===
 +
 +
웹 스크래핑, 데이터 스크래핑, 콘텐츠 스크래핑은 봇이 허가 없이 웹사이트의 콘텐츠를 다운로드하는 경우를 말하는데, 해당 콘텐츠를 악의적인 목적으로 이용하려는 의도가 있는 경우가 많다. 웹 스크래핑은 대개 웹 크롤링보다 대상이 명확하다. 웹 크롤러는 계속 링크를 따라가며 크롤링하지만, 웹 스크래퍼는 특정 페이지 또는 특정 웹사이트만을 추적하기도 한다. 또한, 웹 크롤러, 특히 주요 검색 엔진의 웹 크롤러는, robots.txt 파일을 준수하고 웹 서버에 부담이 되지 않도록 요청을 제한하는 데 비해, 웹 스크래퍼 봇은 웹 서버에 대한 영향을 무시하기도 한다.<ref name="CLOUDFLARE"></ref>
  
 
==크롤링 정책==
 
==크롤링 정책==

2021년 7월 21일 (수) 17:37 판

웹크롤러(web crawler)는 조직적, 자동화된 방법으로 월드 와이드 웹을 탐색하는 컴퓨터 프로그램이다.[1]

개요

웹크롤러는 조직적, 자동화된 방법으로 월드 와이드 웹을 탐색하는 컴퓨터 프로그램으로, 구글(Google) 검색과 야후!(Yahoo) 검색의 최상위 검색 결과를 섞어넣는 메타검색 엔진이다. 웹크롤러는 또한 사용자에게 그림, 소리, 동영상, 뉴스, 옐로 페이지, 화이트 페이지의 검색 옵션을 제공한다. 웹크롤러는 인포스페이스의 등록 상표이다. 1994년 4월 20일에 가동에 들어갔으며 워싱턴(Washington) 대학교의 브라이언 핑커튼(Brian Pinkerton)에 의해 개발되었다. 웹 크롤러가 하는 작업을 웹 크롤링 혹은 스파이더링이라 부른다. 검색 엔진과 같은 여러 사이트에서는 데이터의 최신 상태 유지를 위해 웹 크롤링한다. 웹 크롤러는 대체로 방문한 사이트의 모든 페이지의 복사본을 생성하는 데 사용되며, 검색 엔진은 이렇게 생성된 페이지를 보다 빠른 검색을 위해 인덱싱한다. 또한 크롤러는 링크 체크나 HTML 코드 검증과 같은 웹 사이트의 자동 유지 관리 작업을 위해 사용되기도 하며, 자동 이메일 수집과 같은 웹 페이지의 특정 형태의 정보를 수집하는 데도 사용된다. 웹크롤러는 봇이나 소프트웨어 에이전트의 한 형태이다. 웹크롤러는 대개 시드(seeds)라고 불리는 URL 리스트에서부터 시작하는데, 페이지의 모든 하이퍼 링크를 인식하여 URL 리스트를 갱신한다. 갱신된 URL 리스트는 재귀적으로 다시 방문한다. 웹크롤러는 웹 스파이더, 앤트, 오토매틱 인덱서, 웹 스커터로도 부를 수 있다. 그 외에 (bots), (worms), 웹 로봇(web robot) 등으로도 부른다.[1]

작동 방식

인터넷은 끊임없이 변화하며 확대하고 있다. 인터넷에 얼마나 많은 웹페이지가 있는지 알 수 없으므로, 웹 크롤러 봇은 종자, 즉 알려진 URL 목록에서 시작한다. 먼저 해당 URL에서 웹페이지를 크롤링한다. 이 과정에서 다른 URL에 대한 하이퍼 링크를 찾게 되면, 다음으로 크롤링할 페이지 목록에 추가한다. 검색을 위해 색인화해야 할 인터넷 웹페이지의 수는 막대하므로, 이러한 과정은 거의 무한히 이어질 수 있다. 하지만, 웹 크롤러는 크롤링할 페이지, 크롤링 순서, 콘텐츠 업데이트를 확인하기 위해 다시 크롤링하는 빈도에 대해 보다 선택적인 정책을 따른다.

  • 각 웹페이지의 상대적 중요성: 대부분의 웹 크롤러는 공개된 인터넷 전체를 크롤링하지 않으며, 그렇게 하려고 하지도 않는다. 그 대신, 해당 페이지에 중요한 정보가 포함될 가능성을 나타내는 요소인 해당 페이지를 링크하고 있는 다른 페이지 수, 페이지 방문자 수 등의 요소를 기준으로 먼저 크롤링할 페이지를 결정한다.다른 웹페이지에서 많이 언급하며 방문객이 많은 웹페이지에는 권위 있는 고품질의 정보가 있을 가능성이 크므로, 검색 엔진이 색인을 작성하는 것이 특히 중요하다. 대출이 많은 도서는 다수를 보유하는 도서관과 마찬가지이다.
  • 웹페이지 재방문: 웹 콘텐츠는 지속적으로 변경되거나 삭제되고 새로운 위치로 이동한다. 웹 크롤러는 정기적으로 페이지를 다시 방문하여 최신 버전의 콘텐츠를 색인화해야 합니다.[2]

종류

  • 빙봇: 빙봇(Bingbot)은 2010년 10월 Microsoft에서 Bing을 제공하기 위해 배포한 웹 크롤링 로봇 또는 인터넷 봇 유형이다 . 웹에서 문서를 수집하여 Bing 즉, 검색 엔진에 대한 검색 가능한 색인을 구축한다 . 구글의 구글 봇과 동일한 기능을 수행한다. 빙봇의 일반적인 사용자 에이전트 문자열은 "Mozilla/5.0(compatible; bingbot /2.0; +http://www.bing.com/bingbot.htm)" 이다. 이것은 웹 마스터 에게 누가 파일을 요청하는지 알려주기 위해 웹 서버 로그에 나타난다 . 각 웹마스터는 포함된 에이전트 식별자인 빙봇을 사용하여 사이트에 대한 액세스를 허용하거나 허용할 수 있으며, 기본적 액세스는 허용된다. 액세스 권한을 부여하지 않으려면 로봇 제외 표준을 사용하여 차단하거나 다른 서버 특정 수단을 사용할 수 있고, 차단을 수행하기 위해 웹 서버에 의존한다.[3]
  • 구글 봇: 구글 봇(Googlebot)은 구글이 사용하는 검색 봇 소프트웨어이며 웹으로부터 문서를 수집하여 구글 검색 엔진을 위한 검색 가능한 색인을 만든다. 이 이름은 실제로 각기 다른 두 종류의 웹 크롤러를 가리키기 위해 사용된다. 웹 사이트는 구글봇 데스크톱과 구글봇 모바일에 의해 크롤링될 가능성이 있다. 요청 중 사용자 에이전트 문자열을 살펴봄으로써 구글봇의 서브타입을 식별할 수 있다. 그러나 두 종류의 크롤러 모두 robots.txt의 동일한 제품 토큰 즉, useent 토큰을 준수하므로 robots.txt를 사용하여 구글봇 모바일 또는 구글봇 데스크 톱을 선별적으로 지정할 수 없다. 웹 마스터가 구글봇이나 다른 스파이더에 이용할 수 있는 사이트의 정보를 제한하고 싶다면 robots.txt 파일에 적절한 디렉티브를 지정하여 해당 작업을 수행할 수 있으며, 메타 태그 <meta name="Googlebot" content="nofollow" />를 웹 페이지에 추가하여 진행할 수도 있다. 웹 서버 대한 구글봇의 요청은 구글 봇을 포함하는 사용자 에이전트 문자열, "googlebot.com"을 포함하는 호스트 주소로 식별이 가능하다. 현재 구글봇은 HREF 링크와 SRC 링크를 따른다. 구글봇이 자바 스크립트를 실행하고 Ajax 호출에 의해 생성된 콘텐츠의 구문을 분석할 수 있다는 정황이 있다. 진보된 구글봇의 기능을 설명하는 여러 이론들을 뒷받침하는 것은 자바스크립트를 처리하는 것이다. 현재 구글봇은 크롬 M41 기반의 웹 렌더링 서비스(WRS)를 사용한다. 구글봇은 모든 문서의 모든 링크를 찾아들어가면서 페이지를 발견한다. 그 다음 다른 웹 페이지의 이 링크들을 따라간다. 새 웹 페이지들은 웹 상에 알려진 다른 문서들과 연결되어 있어야 웹마스터가 크롤링, 색인, 수동 제출을 할 수 있게 된다.[4]
  • GM Crawl, PolyBot, RBSE, Swiftbot, WebFountain, WebRACE, 월드 와이드 웹 웜, Yahoo! Slurp 등[1]

주요 검색 엔진 봇

  • Google: Googlebot, 실제는 데스크톱 검색용인 Googlebot Desktop 및 과 모바일 검색용인 Googlebot Mobile의 두 가지 크롤러이다.
  • Bing:Bingbot
  • Yandex: Yandex Bot, 러시아 검색 엔진이다.
  • Baidu: Baidu Spider, 중국 검색 엔진이다.[2]

오픈 소스 크롤러

  • Frontera
  • GNU Wget
  • GRUB
  • Heritrix
  • HTTrack
  • mnoGoSearch
  • news-please
  • 아파치 너치
  • 오픈 서치 서버
  • PHP-Crawler
  • Scrapy
  • Seeks
  • 스핑크스
  • 스톰크롤러
  • tkWWW Robot
  • Xapian
  • YaCy
  • Octoparse[1]

크롤링

크롤링(crawling) 또는 스크레이핑(scraping) 은 웹 페이지를 가져와서 데이터를 추출해 내는 방법 또는, 인터넷에서 존재하는 데이터를 컴퓨터 프로그램을 통하여 자동화된 방법으로 웹에서 데이터를 수집하는 모든 작업을 말한다. 크롤링은 많은 사람들이 스크랩핑과 혼용하여 사용하고 있지만, 사실은 그 의미가 상이한 용어다. 크롤링은 데이터를 수집하고 분류하는 것을 의미하며, 주로 인터넷 상의 html, 문서 등의 웹페이지를 수집해서 분류하고 저장하는 것을 뜻한다. 엄밀히 말해, 크롤링은 데이터의 수집 보다는 여러 웹페이지를 돌아다닌다는 뜻이 강하며, 데이터가 어디에 저장되어 있는지 위치에 대한 분류 작업이 크롤링의 주요 목적이라 할 수 있다.[5] 이렇게 크롤링하는 소프트웨어를 크롤러라고 한다.세상에는 많은 양, 다양항 데이터가 존재한다. 그렇기 때문에 크롤링도 다양한 분야에서 활용할 수 있다. 어떠한 기업에서는 크롤링 담당 분서가 따로 존재한다고 한다. 예를들면 마케팅과 관련하여 개선점을 파악하고 싶을때 웹상에 존재하는 상품들의 후기, 평점등을 크롤링하여 문제점을 파악하고 개선점을 찾을 수 있다.[6] 파싱은 프로그램 언어를 문법에 맞게 분석해 내는 것인데, 어떤 웹페이지의 데이터를 사용자가 원하는 형식, 즉 일정한 패턴으로 추출해 어떠한 정보를 만들어 내는 것을 의미한다. 어느 위치에 저장된 데이터에 접근을 했다면, 이 데이터를 원하는 형태로 가공하는 작업이 주요 목적이라고 생각하면 된다. 종합하여, 언급한 각각의 작업을 수행하는 프로그램을 크롤러, 파서(parser), 스크래퍼(scraper) 등으로 부른다. 여러 자료를 보면 크롤링, 스크랩핑 그리고 파싱은 인터넷에서 프로그램을 이용해 자료를 추출하는 작업을 의미하며, 종종 혼용해서 쓰는 경우가 많다. 전문 개발자가 아니라면 정확하게 구분 할 필요는 없지만, 기본적으로 다소 상이한 개념에 대한 이해 정도는 필요하다.[5]

크롤링 종류

정적 크롤링

정적 크롤링은 정적인 데이터를 수집하는 방법을 말한다. 정적인 데이터란 변하지 않는 데이터를 의미합니다. 즉 한 페이지 안에서 원하는 정보가 모두 드러날때 정적 데이터라고 할 수 있다. 예를 들면, 로또 로또 번호 7개를 크롤링 하고 싶다고 한다면 보이는 화면에서 그 값이 모두 나타나 있다. 그렇기 때문에 한 페이지 안에 원하는 정보가 모두 드러난 경우 인 정적 크롤링에 해당된다. 정적 크롤링은 한 페이지 내에서 모든 작업이 이루어지기 때문에 속도가 매우 빠르다는 장점을 가진다.[6]

동적 크롤링

동적 크롤링은 동적인 데이터를 수집하는 방법을 말한다. 동적인 데이터란 입력, 클릭, 로그인 등과 같이 페이지 이동이 있어야 보이는 데이터를 말한다. 정적크롤링 수집하는 속도가 느리다는 단점이 있지만 더 많은 정보를 수집할 수 있다는 장점이 있다. 예를 들어, 메일함에 있는 메일 제목데이터를 수집하고 싶다고 생각을 해봤을때, 그렇기 위해서는 로그인과정을 거친 후 메일함에 들어가야 하는 동적인 과정이 필요하다. 이러한 경우가 바로 동적 크롤링이다.[6]

동적 크롤링과 정적 크롤링 비교

  • 연속성: 정적 크롤링은 주소를 통해 단발적으로 접근하지만, 동적 크롤링은 브라우저를 사용하여 연속적으로 접근한다.
  • 수집 능력: 정적 크롤링은 수집 데이터의 한계가 존재하지만, 동적 크롤링은 수집 데이터의 한계가 없다.
  • 속도: 정적 크롤링의 속도는 빠르며, 동적 크롤링은 속도가 느리다.
  • 라이브러리: 정적 크롤링은 requests, BeautifulSoup을 사용하며, 동적 크롤링은 selenium, chromedriver를 사용한다.[6]

크롤링 대상

크롤링의 주요 대상은 다양한 형태로 존재하는 데이터이다. 데이터는 앞서 언급한 바와 같이, 데이터 생성 스타일에 따라, 정형, 반정형 그리고 비정형 데이터로 구분되기도 하지만, 데이터를 생산하는 주체에 따라 기업 혹은 기관/조직과 사용자가 생성하는 데이터로 분류할 수 있다. 조직이 생성하는 데이터는 언론이 제공하는 뉴스와 방송영상, 민간기업이 제공하는 제품관련 정보, 영화·음악·게임 등의 미디어 산업체가 생산하는 콘텐츠 형 데이터 등이 있다. 사용자에 의해 생성되는 데이터는 서비스와 제품 소비에 의해 자동적으로 만들어진 데이터(뉴스 기사를 읽은 횟수, 온라인 쇼핑 웹사이트 방문자 수 등)와 뉴스 댓글, 상품평, 메신저·블로그·온라인 카페·유튜브·SNS 내 활동에 의해 생산된 데이터를 포함한다. 이러한 데이터는 사용자 단말을 통하여 읽을 수 있는 데이터이므로, 크롤링이나 스크랩핑 방법을 사용하여 수집할 필요가 있다.

크롤링 방법

크롤링을 하는 방법에는 크게 연구자가 직접 코드를 작성하는 경우와 데이터를 수집하고자 하는 사이트 혹은 회사에서 제공하는 API(application programming interface)를 사용하는 방법이 있다. API라 함은 다양한 의미를 갖고 있지만, 크롤링의 경우에는 사용자에게 데이터를 쉽게 제공하기 위한 툴이라 할 수 있다. API를 사용하다 보면, 빠른 시간에 정제된 형태의 데이터를 수집할 수 있고, 데이터를 소유하고 있는 기업에서 제공하는 툴이기 때문에 데이터 사용에 따른 법적·윤리적 문제가 거의 없지만 최소한의 프로그래밍은 필요하다.직접 크롤링 명령어를 작성해서 데이터를 수집하는 경우는 크게, 데이터를 수집하려는 사이트에서 API를 제공하지 않는 경우, API를 제공하더라도 API를 통하여 원하는 데이터를 수집 할 수 없는 경우도 발생한다. 또한, 크롤링을 하고자 하는 정보가 웹페이지의 소스 코드에 담겨 있지 않는 경우에는 요소검사(network inspection)이나 셀레니움(selenium)과 같은 헤드리스 브라우저(headless browser)를 사용할 수도 있다.[5]

크롤링 후 분석 방법

크롤링한 대용량 데이터를 엑셀에 저장하고, 아래에 기술할 다양한 들을 이용하여 수집한 기사와 댓글 데이터를 분석하여, 궁극적으로 데이터 내 담겨 있는 함의를 도출할 수 있다.

  1. 키워드 빈도 분석: 크롤링에 의해 수집된, 텍스트 자료에 포함된 특정 단어들의 빈도에 따라 주요 단어를 추출할 수 있다. 즉, 주제어 빈도 분석은 특정 문서 집단 내 에서 자주 언급되는 주제어를 추출하고 이들이 언급되는 빈도에 따라 중요도를 분석하는 방법이며, 특정 단어가 수집된 총 문서에서 얼마나 자주 등장하는지를 나타내는 ‘단어 빈도(Term Frequency: TF)’로 단순하게 결정할 수 있다.
  2. 키워드 중요도 분석: 단순하게는, 단어 빈도 값이 큰 단어일수록 중요도가 높다고 판단할 수 있지만, 사실 단어 빈도 값이 큰 단어는 모든 문서에서 자주 등장하는, 즉 그 단어가 흔하게 등장한다는 것을 의미하는 ‘문서 빈도(Document Frequency: DF)’ 값이 큰 단어일 수 있다. 이에, 중요도 높은 키워드 도출을 위해 TF-IDF라는 값을 사용한다. TF-IDF는 DF값의 역수인 IDF(역문서 빈도, inverse document frequency)에 단순단어 빈도값을 곱한 것으로, 이처럼 모든 문서에서 자주 출현하는 상투어를 걸러내기 위함이며, 이는 단순한 단어의 빈도 처리가 아닌 단어의 출현 확률을 기준으로 출현 빈도를 재가공 한 것이다. 즉, TF-IDF는 특정 문서에서의 단어 중요도를 나타내는 단어 빈도에 전체 문서와 관계된 단어의 중요도인 역문서 빈도를 곱한 값으로, 특정 문서 내에서 단어 빈도가 높을수록, 그리고 전체 문서들 중 그 단어를 포함한 문서가 적을수록 그 값이 커짐을 알 수 있다. 이러한 TF-IDF를 통해 언론기사나 댓글 텍스트 데이터 전체에서 공통적으로 혹은 무의미하게 반복적으로 출현하는 특정 단어를 제거할 수 있다.
  3. 텍스트 마이닝: 텍스트 마이닝(text mining)은 TF와 TF-IDF 분석을 발전시킨 것으로, 텍스트 형태로 이루어진 비정형 데이터들을 자연어 처리 방식을 이용하여 정보를 추출하거나 연계성을 파악하는 기법이다. 웹 문서에서 특정 주제어와 매칭되는 단어를 찾아 수를 부여하는 인덱싱(indexing) 검색 기법에서 발전되어 왔으며, 점차 특정 주제어나 문맥을 기반으로 데이터의 숨은 의미를 탐색하는 데 활용되고 있다. 텍스트 마이닝이 두드러지는 분야는 뉴스 기사 분석으로, 이를 활용하면 텍스트의 문맥에 따라 쟁점을 파악하고 텍스트 간 연계를 분석할 수 있다는 장점이 있다.‘연관어 분석(association keyword analysis)’ 혹은 ‘의미망 분석(semantic network analysis)’은 텍스트 마이닝의 한 종류이다. 관심 주제어를 포함한 대상 문서에서 함께 언급된 주제어를 추출하여 관심 주제어와 어떠한 토픽들이 연결되는 지 분석할 때 사용한다. 예컨대, 하나의 뉴스 기사에서 동시 출현한 용어의 쌍을 추출하고 전체 문서집합에서 주제어의 쌍별 발생 빈도와 연결 관계를 분석하면, 언론 기사 상의 주요 관심 토픽과 그 연계성의 변화를 추적 할 수 있다. 또한 주제어를 특정 토픽 별로 분류한 후 연관어 분석을 실시하면 주요 쟁점 간의 관련성을 구조적으로 파악하기에 용이하다. TF와 TF-IDF 분석을 통하여 언론이 자주 언급하는 의제 혹은 주요 이슈를 간단하게 추출할 수 있으며, 추출된 단어가 내재하는 감성적인 긍·부정 의미를 파악하여, 특정 아젠다에 대한 언론이 바라보는 시각 및 관점, 즉 프레임을 이해하는 데 도움이 된다.[1]

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

웹 스크래핑, 데이터 스크래핑, 콘텐츠 스크래핑은 봇이 허가 없이 웹사이트의 콘텐츠를 다운로드하는 경우를 말하는데, 해당 콘텐츠를 악의적인 목적으로 이용하려는 의도가 있는 경우가 많다. 웹 스크래핑은 대개 웹 크롤링보다 대상이 명확하다. 웹 크롤러는 계속 링크를 따라가며 크롤링하지만, 웹 스크래퍼는 특정 페이지 또는 특정 웹사이트만을 추적하기도 한다. 또한, 웹 크롤러, 특히 주요 검색 엔진의 웹 크롤러는, robots.txt 파일을 준수하고 웹 서버에 부담이 되지 않도록 요청을 제한하는 데 비해, 웹 스크래퍼 봇은 웹 서버에 대한 영향을 무시하기도 한다.[2]

크롤링 정책

  • 선택 정책: 페이지의 다운로드를 언급
  • 재방문 정책: 언제 문서의 변경사항을 검사할지를 언급
  • 공손성 정책: 웹사이트의 과부하를 막기 위한 언급
  • 병렬화 정책: 분산 웹 크롤러를 어떻게 조율할지를 언급[1]

각주

  1. 1.0 1.1 1.2 1.3 1.4 1.5 웹 크롤러〉, 《위키백과》
  2. 2.0 2.1 2.2 CLOUDFLARE 공식 홈페이지 -〈What is a web crawler? | How web spiders work
  3. 빙봇〉, 《위키백과》
  4. 구글 봇〉, 《위키백과》
  5. 5.0 5.1 5.2 삼성디스플레이 뉴스룸 공식 홈페이지 -〈원하는 정보만 수집한다! 크롤링과 빅데이터 분석 활용〉, 2020-04-22
  6. 6.0 6.1 6.2 6.3 Jaaaa_mj, 〈크롤링 종류(정적 VS 동적)〉, 《티스토리》, 2021-01-17

참고자료

같이 보기

  검수요청.png검수요청.png 이 웹크롤러 문서는 솔루션에 관한 글로서 검토가 필요합니다. 위키 문서는 누구든지 자유롭게 편집할 수 있습니다. [편집]을 눌러 문서 내용을 검토·수정해 주세요.