웹크롤링을 시작하기 전에 준비할 것

반응형
    반응형

    웹크롤링?

    파이썬을 통해서 데이터 처리를 하려고 하지만 데이터가 없으면 무용지물입니다.

    데이터를 받아오는 방법은 많지만 그 중에서도 웹사이트내에 있는 데이터나 정보를 가져오는 방법을 소개하려고 합니다. 웹크롤링이라고 하는데요. 크롤링을 스파이더링이라고 부르기도 하는데 웹페이지에서 정보를 추출하기 위한 작업을 의미합니다. 웹사이트의 내용을 수집하므로 웹크롤링으로 불리기도 합니다.

    크롤링으로 데이터를 수집하는 프로그램을 크롤러(crawler)라고 합니다.

    스파이더(spider) 또는 봇(bot)이라고도 부릅니다.

     

    알면 좋은 지식

    크롤링을 하려면 html의 기본문법정도는 알면 좋습니다. 어떤 태그에서 어떤 역할을 하는지 안다면 빠르게 검색을 할 수 있어서 여러모로 도움이 됩니다. 기초지식은 제가 html에서 포스팅한 글들을 보시면 충분히 이해하실 수 있습니다.

    https://seong6496.tistory.com/category/%EC%9B%B9/HTML

     

    '웹/HTML' 카테고리의 글 목록

     

    seong6496.tistory.com

    http의 방식이 html 만으로 이루어있지 않습니다. 자바스크립트나 Ajax로 구성되어 있는 경우도 있는데 모두 다 파이썬의 한개의 모듈로 크롤링을 할 수 있으면 좋겠으나 웹페이지의 구성방식에 따라 쓰는 모듈이 다릅니다.

     

    먼저 자바스크립트는 동적 제어 언어라 파이썬의 기본라이브러리로는 자바스크립트를 실행할 수 없어서 Selenium 이라는 모듈을 써야 합니다. 자바스크립트에 대한 자세한 설명은 다음 포스팅을 참고해주세요.

    https://seong6496.tistory.com/17?category=888326

     

    JavaScript 작성장소

    스크립트(Script) 언어 스크립트 언어를 알면 JavaScript를 이해하는데 도움이 되어서 먼저 설명한다. 스크립트란 말은 연극용어에서 유래되었는데 그 뜻을 찾아보면 '각본·대본' 이라고 되어있다. 각본과..

    seong6496.tistory.com

    Ajax도 자바스크립트의 일종인데 다음지도,메일, 댓글 더보기 같이 페이지전체를 새로고침 하지않고 해당 결과 부분만 출력되는 것들을 만들 때 씁니다. 즉, 폼만 전송해 서버에서 정보를 가져오는 기술을 ajax라고 합니다. 이것도 자바스크립트의 일종으로 xml의 약자입니다. 자바스크립트므로 이 역시도 Selenium을 이용합니다.

    결과적으로, 웹사이트의 html과 자바스크립트는 웹크롤링 하는 방법이 다르다는 것을 알아두시면 되겠습니다.

     

    마지막으로 정규표현식을 좀 알아야 합니다.

    웹크롤링을 할 때 내가 원하는 데이터만 가져오기 위해서 검색을 해야합니다.

    단순히 찾기기능(Ctrl+F)로 할수도 있겠지만 데이터화해야하는 것이 목적이므로 원하는 내용을 찾아서 원하는 모양으로 출력을 해야 합니다. 그러기 위해서 찾기 기능을 담당하는 re모듈을 씁니다. 그런데 re에서는 문법에 맞게 입력을 해주어야 컴퓨터가 찾아줍니다. 이 문법을 정규표현식이라고 합니다.

    정규표현식에 대한 자세한 내용은 추후에 포스팅하겠습니다. 

     

    라이브러리

    웹 데이터를 가져오기 위해서는 크게 세가지 모듈을 써야 합니다.

    • requests
    • BeautifulSoup
    • Selenium

    requests 는 자바스크립트는 가져오지 못하지만 빠른 속도로 데이터를 가져오는 게 큰 장점입니다. 주로 url 의 전체정보를 가져올 때 씁니다.

    BeautiflulSoup은 파싱해줍니다. html,lxml,html5lib 파일을 파서해줍니다. 즉, html 언어로 이루어진 웹페이지의 내용을 보기 좋게 출력해줍니다.

    Selenium은 자바스크립트로 구현된 정보를 가져올 수 있습니다. 다만 Selenium은 웹 브라우저를 통해서 데이터를 가져오기 때문에 항상 웹 브라우저가 실행되어야 합니다. 그걸 위해서 크롬 드라이버, 파이어폭스 드라이버를 이용합니다. 자동화를 해놓으면 크롤링을 하기 위한 파이썬파일이 실행될때마다 브라우저가 켜지니 불편한 점이 있습니다. 그래서 화면이 없는 웹 브라우저인 headless 브라우저인 PhantomJS를 사용합니다. 요즘은 크롬이나 파이어폭스로 headless를 설정을 할 수 있기는 합니다. 

     

     

    브라우저 별 드라이버는 다음 링크에서 받으시면 되겠습니다.

    크롬 : http://chromedriver.chromium.org/downloads

    파이어폭스 : https://github.com/mozilla/geckodriver/releases

    PhantomJS : https://phantomjs.org/download.html

    각자 자신이 쓰고자 하는 브라우저의 버전에 맞게 설치하시면 되겠습니다.

     

     

    모듈을 설치하려면 jupyter notebook에 다음과 같이 입력하면 됩니다.

    !pip install requests
    !pip install bs4
    !pip install selenium
    

     쉘이나 도스창을 이용하실 때에는 !를 빼고 입력하시면 되겠습니다.

     

     

    이번 포스팅에서는 웹크롤링을 하기위해 필요한 것들을 포스팅했습니다. 사용방법이나 활용부분은 추후에 자세하게 포스팅하겠습니다. 지금까지 읽어주셔서 감사합니다.

    댓글

    Designed by JB FACTORY

    ....