개인적으로 토이프로젝트를 하면서 스크래이핑을 해봤다. 사실 크롤링과 스크래이핑이 정확히 어떻게 차이가 있는지 몰랐지만 내가 진행한 부분은 단순하게 html을 읽어와서 css selector를 찾고 그 부분의 내용을 저장하는 것이었다. 그리고 스크래이핑이라고 배워서 스크래이핑이라고 했었다.
내가 크롤링에 대해 알고있던 것은 인터넷에서 자동으로 데이터를 수집하는 것이었다. 그리고 내가 했던 css selector를 활용한 것은 자동이라기엔 페이지 구성이 바뀌면 데이터를 수집할 수 없었기 때문에 자동이라고 느끼지는 않았다.
그러다 구글에서 이 글을 보게 되었는데 '파이썬 크롤러' 이런식으로 구글링하면 나오는 것들에 대해 매우 부정적으로 보는 글이었다. 그리고 크롤링으로 논문도 쓸 정도로 연구할만한 분야라는 것도 알게 되었다. 이 글에 따르면 내가 한 작업은 scraping 이라고 할 수 있다. 특정 시점에 데이터를 수집해오는 것이기 때문이다.그렇다고 동적 크롤러를 만드는데 쓰인다는 Selenium을 쓴다고 크롤러라고 할 수도 없단다. 웹 크롤러는 API를 사용하는 것이 아니기 때문이란다.
그렇다고 이 글에서 말하는 "크롤러"를 만드려니 시작단계인 사람들에게는 너무 가혹한 일이 아닐까 싶다.
그래도 저 글에서 중요하게 봐야할 점은 robots.txt를 항상 확인하라는 점이다. 구글에서 검색하면 네이버 뉴스가 검색 결과로 나오지 않는 것 처럼 robots.txt의 사항을 따르는 것이 크롤러를 만드는데 중요하다
📖法 “여기어때, 야놀자 정보 무단수집 맞다”...前 대표 ‘유죄’ 이렇게 법적인 문제가 될 수도!
이제부터는 웹페이지에서 데이터를 긁어오는 것을 스크래이핑이라 칭하겠다. 그럼 파이썬을 사용해서 스크래이핑을 하려면 어떻게 할까? 소제목처럼 두 가지 라이브러리를 사용하면 된다. Javascript가 없는 정적 페이지는 BeautifulSoup면 충분하고 Javascript가 있는 동적 페이지의 경우 Selenium을 사용해야 한다. 물론 Selenium으로 BeautifulSoup의 기능을 모두 대신할 수 있다.
그렇다면 정적 데이터와 동적 데이터는 어떤 차이가 있을까?
이러한 차이 때문에 정적 크롤러, 동적 크롤러와 같은 말을 사용하게 된다. 그리고 위에서도 서술했듯이 동적 데이터는 Javascript로 인해 생겨난다고 할 수 있다.
동적 스크래이핑을 위해 Selenum을 쓴다면 브라우저를 통해 작동하기 때문에 web driver를 같이 설치해야 한다. 주로 Chrome을 사용하지만 나의 경우 Firefox를 사용하기도 했다. (Edge까지 3가지 web driver가 있다)
사실 아직 동적 데이터를 수집하는 경우는 없었어서 selenium을 이용해본적은 없다고 할 수 있다. selenium을 통해 로그인을 하고, 스크롤을 내리면서 이미지를 저장한다든지 하는 작업을 해보긴 했지만 프로젝트로 해본적은 없다. 다음 토이 프로젝트 주제로는 selenium을 이용해봐야겠다.