본문 바로가기

Python

파이썬으로 웹 크롤러(Web Crawler) 만들기 (1)

웹 크롤러(Web Crawler)는 웹 페이지의 정보를 탐색하여 수집하는 역할을 하는 프로그램을 의미합니다. 만일 우리가 비트코인이라는 이름이 들어간 뉴스가 어떤 것이 올라와 있는지 매일 검색하여 그 타이틀을 수집한다고 가정해보겠습니다. 일반적으로 많이들 사용하는 포탈 사이트에 접속후 뉴스 카테고리에 접속한 다음 비트코인이라는 검색어를 입력하고 그 결과로 나온 수많은 뉴스 제목을 하나씩 긁어서 어딘가에 붙여넣기를 하고 또 페이지를 넘겨서 다른 페이지의 제목들도 수집합니다. 그렇게 매일 작업해줘야하는 비로소 목적에 맞는 결과물을 얻을 수 있을 것입니다.


이 귀찮은 작업을 매일 사람이 한다는 것은 상상하기 어렵습니다. 시간낭비와 인력낭비가 아닐 수 없습니다. 이러한 단순 반복적 작업을 대체해줄 수 있는 것이 바로 웹크롤러 입니다. 웹 크롤러는 사람을 대신하여 포탈 사이트에 접속하고 그 결과를 분석하여 원하는 정보만 긁어와줍니다. 그리고 그 결과를 어떻게 활용할지는 개인에게 달려있는 것이지요.


웹 크롤러 실습에서는 파이썬을 이용하여 웹 크롤러를 구현하고, 그 결과를 이메일로 전송하는 프로그램을 개발하는 과정을 담을 예정입니다. 그리고 그 프로그램을 리눅스 crontab으로 등록하여 그 결과를 매일 아침 받아볼 수 있도록 하겠습니다.


웹 크롤러를 만들기에 앞서 기본적으로 준비되어야할 사항이 있습니다.


1. Python 설치

파이썬을 이용해서 개발을 할 것이기 때문에 파이썬은 설치되어 있어야 합니다. 파이썬은 파이썬 공식 홈페이지에 가시면 쉽게 다운받아 설치가 가능합니다. 저는 파이썬 3.x로 버전을 사용하기 때문에 처음 파이썬을 설치하시는 분이라면 동일한 3.x 버전으로 설치하시기 바랍니다. 2.x 버전과는 비록 작은 부분이긴 해도 문법의 차이가 있기 때문에 파이썬에 익숙하지 않으신 분이라면 제가 코딩하는 내용을 바로 반영할 수 있도록 3.x 버전을 설치하시길 바랍니다.


Download Python

https://www.python.org/downloads/


2. PyCharm 설치

PyCharm은 파이썬 코딩시에 사용하는 IDE입니다. IntelliJ를 개발한 JetBrain사에 개발하였으며, 파이썬 코딩에 강력한 기능을 제공합니다. 유료 프로그램이지만 Community 버전은 무료로 이용하실 수 있습니다. Windows와 Mac, Linux를 지원하기 때문에 본인이 사용하는 OS에 맞춰서 설치하시면 됩니다.


Download PyCharm

https://www.jetbrains.com/pycharm/download/#section=windows


3. Python Library 설치

웹 크롤러 개발에는 총 3가지의 라이브러리를 사용합니다.


첫번째는 requests 라이브러리로 url을 이용하여 사이트에 접근하여 결과값을 리턴받는 역할을 합니다.

pip install requests 명령어로 설치하거나 PyCharm에서 import 한 후 설치합니다.

만일 pip 명령어가 바로 작동하지 않으면 시스템 변수에 pip.exe 경로를 추가하시기 바랍니다.


두번째는 BeautifulSoup4 라이브러리입니다. BeautifulSoup4 라이브러리는 입력된 텍스트를 json 혹은 xml로 구조화해주는 역할을 합니다. 원하는 정보만 추출하기 위해서 페이지에서 리턴되는 자료를 구조화할 필요가 있는데 그 역할을 담당해주는 것입니다.

pip install beautifulsoup4 으로 설치합니다.


마지막으로 pandas 라이브러리는 추출한 결과를 DataFrame 자료구조에 담기 위해서 사용합니다. DataFrame을 이용하여 자료를 가공하거나, 표형식의 csv 파일로 데이터를 출력시킬 수 있습니다.

pip install pandas 로 설치합니다.


이외에도 메일로 데이터를 발송하기 위해서 smtplib과 email 라이브러리를 설치해야합니다. 각 라이브러리는 프로그램에서 부수적인 역할이므로 설명은 생략하겠습니다. 설치는 아래의 명령어를 이용하여 진행합니다.


pip install smtplib

pip install email