파이썬 웹 크롤러? 웹 스크래퍼 만들기 - 1

파이썬 웹 크롤러

크롤러? 웹 크롤러!

파이썬 크롤러를 만들기에 앞서 웹 크롤러에 대해 알아보겠습니다. 일반적으로 말하는 웹 크롤러에 대한 정의는 아래 링크에 자세히 설명되어 있습니다.

 

https://ko.wikipedia.org/wiki/%EC%9B%B9_%ED%81%AC%EB%A1%A4%EB%9F%AC

 

웹 크롤러 - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. 검색 엔진에 대해서는 웹크롤러 문서를 참조하십시오. 웹 크롤러(web crawler)는 조직적, 자동화된 방법으로 월드 와이드 웹을 탐색하는 컴퓨터 프로그램이다. 웹

ko.wikipedia.org

간략히 웹 크롤러에 대해 요약을 하자면 DNS 정보(많은 사이트)를 기준으로 각 사이트마다 갖고 있는 하이퍼 링크 및 문서를 수집하는 것을 크롤러라고 부릅니다.

 

그렇다면 과연 이 포스팅 글의 주제이기도 한 파이썬 크롤러는 웹 크롤러와 그 의미가 부합할까요? 비슷한 것 같으면서도 다릅니다. 파이썬 크롤러는 특정 페이지에서 특정 데이터를 가져오는 기능을 수행하기 때문에 개인적인 생각으로 파이썬 스크래퍼(Scraper) 만들기 파이썬 스크래핑 정도로 불리는 것이 좋을 것 같습니다.

 

제가 웹 크롤러의 의미를 먼저 언급한 이유는 바로 robots.txt 때문입니다. 만약 파이썬으로 생성하는 코드가 정말 크롤러라면 이 robots.txt를 반드시 지켜야 하기 때문입니다. 이는 각 사이트마다 크롤러가 접근하지 말아야 하는 곳도 명시되어 있기 때문입니다.

 

하지만 만들려는 파이썬 크롤러는 검색 엔진에서 사용할 백데이터를 수집하기 위한 목적이 아닌 특정 데이터만을 수집하는 목적이 있습니다. 또한 수집 데이터 범위도 일반적인 웹 크롤러가 수집하는 데이터 범위보다 상당히 작습니다. 또한 웹 브라우저를 통해 보이는 거의 모든 데이터를 수집할 수 있습니다. 

 

그렇다면 robots.txt에서 크롤러가 접근 금지되어 있는 주소임에도 불구하고 파이썬 크롤러를 제작하여 해당 데이터를 가져온다면 이것은 무단 수집일까요? 대답은 이 글을 보시는 여러분들께 맡기겠습니다.

 

파이썬 크롤러를 개인적으로 파이썬 스크래퍼로 불리면 좋을 것 같다는 개인적인 의견을 내놓았습니다. 하지만 저도 대세에 따라 이하 글부터는 그냥 파이썬 크롤러라고 칭하겠습니다.

 

 

파이썬 크롤러 제작 시 알고 있어야 하는 사항

웹 개발자가 파이썬 크롤러를 제작한다면 그리 문제가 되지는 않습니다. 하지만 html구조나 css를 전혀 모른다면 문제가 될 가능성이 좀 있습니다. 왜냐하면 아무리 화면에서 보이는 정보라 하더라고 결국 크롤러가 가져오는 정보는 html태그 정보 이기 때문입니다. 즉, html 파일 안에서 수집에 필요한 정보가 어디에 있는지 파악을 해야 하기 때문입니다.

 

그래도 요즘은 툴이 많이 좋아져 위치 정도는 충분히 툴로 커버할 수 있고 프로그램을 좀 해본 분들이라면 감으로 금방 이해할 수 있기 때문에 html 파일 구조를 모르시는 분들이라면 파악할 수 있는 센스를 믿고 진행해도 좋을 것 같습니다.

 

 

파이썬 크롤러의 장점과 단점

사실 장점과 단점이 특별하지는 않습니다. 장점이라면 주기적으로 혹은 대량의 데이터를 크롤러를 제작하여 손쉽게 가져올 수 있다는 것이 가장 큰 장점이 되겠습니다. 이에 반해 단점이라면 웹 페이지가 리뉴얼되어 html구조가 변경되었다면 더 이상 기존 코드로는 데이터를 가져올 수 없다는 단점이 있습니다.

 

즉, 일회성 파이썬 크롤러를 제작하는 것이 아닌 이상 언젠가 코드를 수정해야 하므로 코드를 손쉽게 수정할 수 있도록 코드 작성이 되어야 하며 구조 변경으로 인하여 잘못된 데이터를 가져올 수 있으므로 이에 대한 대처 코드가 마련되어야 한다는 것입니다.

 

 

파이썬 크롤러 관련 라이브러리 설치

파이썬 크롤러를 제작하는데 몇 가지 라이브러리가 필요합니다. 해당 라이브러리가 설치되어 있다면 버전과 상관없이 굳이 또다시 설치하지 않으셔도 됩니다. 설치된 라이브러리 목록은 "pip list" 명령어로 확인 가능합니다.

 

간혹 라이브러리 목록 확인 후 아래와 같은 메시지가 확인되었다면 pip를 업그레이드해주시는 것이 좋습니다. 이 글을 작성하는 PC에 설치되어 있는 파이썬이 오래전 설치한 버전으로 pip 버전이 낮아 업그레이드하라는 메시지가 출력되었습니다. 바로 아래와 같이 말이죠.

파이썬 pip upgrade 메시지

pip 업그레이드는 출력 메시지에 나와 있는 것처럼 명령어를 입력해 주시면 됩니다.

"python -m pip install --upgrade pip"

파이썬 pip upgrade 완료 메시지

pip가 제대로 업그레이드되었다면 위 메시지와 같이 Successfully를 확인할 수 있습니다. 그리고 다시 pip list 명령어를 수행해도 pip 업그레이드하라는 메시지가 없다면 문제없이 업그레이드가 된 것입니다.

 

이제 필요한 모듈을 설치해 보겠습니다.

 

requests 모듈 설치

   - 웹 데이터를 요청하기 위해서 파이썬 내장 모듈인 urllib모듈이 있습니다. 하지만 개발자 입장에서 좀 더 편하게 개발할 수 있는 requests모듈을 더 많이 사용합니다.

pip install requests

 

bs4 모듈 설치

   - 파이썬 버전에 따라 bs4가 내장 모듈일 수도 있습니다. bs4 모듈은 requests로 요청한 html데이터를 파이썬에서 원활히 사용할 수 있도록 객체화합니다. 

pip install bs4

 

lxml 파서 설치

   - bs4를 이용한 모듈 작성 시 lxml 파서를 사용할 것입니다. 만약 이 파서가 설치되어 있지 않다면 설치하는 것이 좋습니다. 만약 설치되어 있지 않고 bs4에서 lxml 파서를 사용할 경우 아래와 같은 메시지가 여러분을 반길 것입니다.

 

bs4.FeatureNotFound: Couldn't find a tree builder with the features you requested: lxml. Do you need to install a parser library?

 

pip install lxml

 


2편에서 계속...

 

captainbin.tistory.com/entry/%ED%8C%8C%EC%9D%B4%EC%8D%AC-%ED%81%AC%EB%A1%A4%EB%9F%AC-%EB%A7%8C%EB%93%A4%EA%B8%B0-2

 

파이썬 웹 크롤러? 웹 스크래퍼 만들기 - 2

파이썬 웹 크롤러 requests 익히기 requests 모듈에서 웹 크롤러를 제작하는데 필요한 최소한의 사용법을 알아보겠습니다. 웹 서버로 데이터를 요청하는 방식은 GET방식과 POST방식이 있는 것은 잘 아

captainbin.tistory.com

 

MORE