Study/Python

크롤러

AC 2019. 4. 24. 20:08

● 크롤러란 무엇인가?

● 크롤러를 만들기 위한 선형 지식은?

● 크롤러는 왜 필요한가?

 

 

------------------------------------------------------------------------------------------

 

무언가 만들거나 배우기 전에 만들려는 대상, 배우는 대상이 무엇인지 알아야 한다.

인터넷에 크롤러를 검색하여 이미지 결과를 보면 거미와 거미줄을 볼 수가 이싿.

 

이 그림이 크롤러와 연관된 것이다. 또한, 검색 결과중 수영 영법 중 하나인 크롤, 지렁이의 의미를 가진 나이트 크롤러를 볼 수 있다.

 

출처 : 구글 / 크롤러 비유

 

거미, 지렁이, 수영은 거미줄, 물, 땅이라는 공간에서 자유롭게 움직이는 객체이다.

크롤러는 www (월드 와이드 웹) 인터넷 속을 자유롭게 다니는 프로그램을 의미한다.

 

조금 더 구체적으로 설명하면 자유롭게가 아닌 알고리즘에 의해 움직이며 데이터를 수집하는 프로그램이다.

 

 

--------------------------------------------------------------------------------------------------------------------------

 

1-1 크롤러의 별명

 

크롤러는 알고리즘에 의해 인터넷을 탐색하는 프로그램이다. 이러한 크롤러를 다양한 방식으로 표현할 수 있다.

 

크롤러는 스크래퍼, 봇, 스파이더, 지능 에이전트라고도  불린다. 이 중에서 가장 많이 사용되는 용어는 크롤러와 스크래퍼이다. 크롤러가 동작하는 것을 크롤링, 스크래퍼가 동작하는 것을 스크래핑이라고 부른다.

 

페이지를 돌아다니는 행위는 크롤링, 특정 페이지의 데이터를 수집하는 행위는 스크래핑으로 의미는 약간 다르다.

 

하지만, 이 둘을 합쳐 통상적으로 크롤러가 크롤링한다고 표현한다.

 

이러한 크롤러를 가장 잘 구현한 서비스는 모두가 잘 알고 있는 검색 엔진이 대표적이다.

 

검색 엔진은 크롤러를 통해 다양한 페이지를 수집 후 검색 키워드에 맞추어 사용자에게 제공해 주는 서비스이다.

 

--------------------------------------------------------------------------------------------------------------------------

 

2 크롤러를 만들기 위한 지식

 

크롤러는 인터넷을 돌아다니면서 데이터를 수집하는 프로그램이다.

인터넷을 돌아다니기 때문에 인터넷이 무엇인지를 알아야되고, 인터넷의 기본 개념인 클라이언트와 서버를 알아두어야 한다. 그리고 웹 브라우저의 작동방식을 알아야 한다.

 

물론 이들을 몰라도 크롤러를 만들 수 있는 페이지가 많다. 하지만 이러한 동작 방식, 개념을 정확하게 알지 못한다면 우리는 제대로 된 크롤러를 만들 수 없다 (절대, 네버)

 

크롤러를 만드는데 다양한 개념이 필요한 이유는 웹에 대해 상당히 의존적인 녀석이기 때문이다. 무엇이? 크롤러가

 

크롤러라는 것은 우리가 수집하고자 하는 사이트에 따라 만드는 방식이 달라진다.

 

그러므로 기본 개념을 잘 잡고 크롤러를 만드는 것이 중요하다. 

 

--------------------------------------------------------------------------------------------------------------------------

 

2-1 클라이언트

 

크롤러를 만들기 위해 필요한 지식 중 첫 번째는 클라이언트에 대한 개념이다.

 

여기서 클라이언트란 웹 브라우저 및 웹을 의미한다. 우리는 스마트폰을 쓰며 다양한 앱을 실행하고, 컴퓨터를 사용하면서 프로그램을 실행한다. 우리가 사용하고 있는 각종 앱, 프로그램, 웹 브라우저를 클라이언트 프로그램이라고 한다.

 

--------------------------------------------------------------------------------------------------------------------------

 

2-2 서버

 

크롤러를 만드는 데 필요한 지식 중 두 번째는 서버이다.

클라이언트를 제외하고 보이지 않는 곳에서 클라이언트의 처리를 도와주는 것을 서버라고 부른다.

서버 없이 클라이언트가 존재할 수 없기 때문에 서버의 개념을 알고 가는 것이 중요하다.

 

특히 웹은 서버 없이는 절대 동작할 수 없다. 우리가 주소를 치고 사이트에 접속하는 행위가 서버에 접속하는 것이다.

 

서버는 클라이언트가 필요한 데이터를 제공해주는 역할을 한다.

 

크롤러를 만들 때 서버의 개념이 꼭 필요한 것은 아니다. 하지만 복잡한 사이트의 경우 서버의 개념 없이 크롤러를 만드는 것은 불가능하다.

 

--------------------------------------------------------------------------------------------------------------------------

 

2-3 언어(파이썬)

 

크롤러를 만들기 위해서는 프로그래밍 언어를 알아야 한다.

 

 

출처 : 구글

 

다양한 언어로 크롤러를 만들 수 있지만, 다른 언어보다 진입 장벽이 낮아 입문자도 쉽게 익힐 수 있는 장점을 지닌 파이썬을 배워보도록 하자. 이 언어는 데이터를 처리하는 데 있어 다른 언어에 비해 큰 강점을 지니고 있다. 파이썬이 인공지능, 데이터 처리에 관련된 다양한 라이브러리와 프레임워크를 제공하고 있기 때문이다.

 

라이브러리와 프레임워크에 대해서는 인터넷에서 많은 정보가 있으니 알아보자.

 

 

--------------------------------------------------------------------------------------------------------------------------

 

3 크롤러를 만들어야 하는 이유

 

데이터가 넘쳐흐르는 이 21세기 하루에 사람이 2GB 정도의 데이터를 본다고 한다.

 

그럼 2GB의 데이터는 얼마나 많은 양일까?

 

데이터의 용량을 가장 쉽게 이해할 수 있는 것이 바로 스마트폰이다.

 

우리는 스마트폰을 사용하면서 데이터의 이용요금을 지불하고 있다.

 

데이터의 이용 요금을 지불하는 시대일 정도로 데이터의 중요도는 점점 올라가고 있다.

 

스마트폰의 데이터는 상당히 추상적이지만, 만약 데이터를 판별하는 능력이 부족하다면 지불하지 않아도 될 돈을 지불할 수 있다. 그만큼 우리는 수많은 데이터 중에서 의미있는 데이터를 판단하는 능력이 필요하다.

 

--------------------------------------------------------------------------------------------------------------------------

 

3-1 데이터 생산

 

2GB 바이트로 환산하면 20억 바이트로 2바이트 크기를 가진 한글 문자 1억 자에 해당하는 엄청난 양의 데이터이다.

각종 매체를 통해 끊임 없이 데이터가 생산되고 데이터에 노출된다. 페이스북, 인스타그램과 같이 SNS를 통해 다양한 정보에 노출되고, 인터넷 기사를 통해 쉽게 기사를 볼 수 있다. 유튜브를 통해 개인도 영상을 만들어 많은 사람들에게 쉽게 노출할 수 있다.

 

시간이 지날수록 데이터가 생산되고 데이터를 접하는 양이 점점 더 많아져 직접 데이터를 수집하기 쉽지 않다.

 

--------------------------------------------------------------------------------------------------------------------------

 

 

3-2 데이터의 사용

 

데이터를 많이 필요로 하는 분야는 인공지능, 머신러닝, 딥러닝같은 예측 분야이다. 이 분야는 데이터가 많을수록 더 정확한 예측을 한다. 이 중 대표적인 예가 2016년 이세돌과 바둑 대결을 한 알파고이다.

 

알파고는 스스로 대국을 두고, 다른 바둑 기사들과 대국하여 데이터를 쌓아나갔다. 알파고와 인간의 대결에서 4:1로 인공지능이 인간을 이기는 결과를 만들어 냈다. 알파고가 대국한 양은 인류가 바둑을 둔 것보다 훨씬 많을 정도로 엄청난 양의 데이터라고 한다.

 

인간과 인공지능의 대결은 이번이 처음이 아니다. 1979년 백개먼 게임에서 AI가 인간을 7:1로 승리,

 

1990년 체커 AI가 인간을 이기기 시작, 2006년 스크래블 보드게임 AI는 3:2로 승리를 했다. 인간과 인공지능의 대결은 갑자기 이슈된 것이 아니라 과거부터 관심거리였다는 것이다.

 

게임이 가장 대중적이기 때문에 많은 사람이 인간과 인공지능의 대결을 관심있게 지켜보지만, 인공지능은 게임뿐 아니라, 애플의 시리와 같은 음성인식, 금융/핀테크, 자동 운전, 검색 엔진 등 다양한 분야에 사용된다.

 

--------------------------------------------------------------------------------------------------------------------------

 

3-3 데이터 수집 방법

 

데이터를 수집하는 가장 간단한 방법은 API를 활용하는 것이다. API란, 특정 서비스가 데이터를 제공하는 방법이다.

하지만 웹에서는 API를 제공하지 않아 사용이 불가능한 데이터들이 존재한다.

 

이럴 때 크롤러를 만들면 웹에서 제공하는 데이터 수집이 가능하다. 데이터 수집뿐 아니라, 다양한 처리와 데이터 가공을 할 수 있다. 크롤러뿐만 아니라 API를 사용하더라도 데이터를 사용하는 목적에 맞춰 가공하는 것이 중요하다.

LIST