STEP 03. 크롤러 만들어서 분석하기
이전의 다른 분석 업체들로부터 분석한 결과나 데이터를 이용하는 것 이외에도 보다 정확한 분석을 위해서는 비정형 데이터 분석을 할 필요가 있습니다.
이런 데이터도 누군가가 해놓은 것을 사용할 수 있다면 무척이나 편리하고 감사하겠지만, 그렇지 않은 경우가 당연히 더 많겠죠?
이럴 때 사용하는 것이 바로 크롤링 기법인데요, 흔히 '데이터를 긁어온다'라고 말하기도 합니다.
이번 과정에서 데이터를 가져올 곳은 크게 세 곳입니다.
1. 네이버 뉴스
2. 네이버 블로그
3. 네이버 카페
가져올 것은 크게 세 가지입니다.
키워드별 게시물 제목과 날짜, 간단한 내부 내용을 가져오되 관련 태그 같은 게 있다면 같이 가져오는 게 좋겠네요.
우선은 특별한 코딩 능력이 필요없는 방법부터 사용해보겠습니다.
바로 시각화 프로그램으로 많이 알려져있는 POWER BI입니다.
STEP 04. POWER BI CRAWLING
POWER BI로 만드는 크롤러의 장점은 굳이 코드를 짤 필요가 없고, 빠른 시간 내에 비교적 적은 양의 데이터 수집을 하는 것이 용이하다는 것입니다. 어떤 데이터를 본격적으로 크롤링하기 전에 사전에 표본 데이터 정도를 수집해 시각화해보거나 하는 식으로 사용할 수 있습니다.
단점은 아무래도 원하는 정보를 디테일하게 가져오기 어렵고, 데이터를 가져오는데 변수가 많아질수록 가져오는 데이터의 양이 많아질수록 여러 오류나 딜레이가 발생할 수 있다는 것입니다.
다음은 POWER BI를 통해 네이버 뉴스를 크롤링한 결과입니다.
위는 네이버 뉴스에서 국내여행을 키워드로 검색한 결과인데요, 실질적으로 RSS가 아니면 단번에 많은 데이터를 가져오는 것은 어렵습니다.
실제로 위에서 보이는 것처럼 한 번에 가져올 수 있는 것은 해당 페이지에 있는 양으로 제한됩니다. 또한 데이터의 형태도 조금은 지저분합니다. 이를 한 번 정리해 보겠습니다.
테이블을 정리하니 간결해진만큼이나 고작 10개밖에 안되는 양이 부쩍 적어보입니다.
하지만 이를 해결할 수 있는 방법이 있습니다. 바로 매개변수와 사용자 함수를 복합적으로 사용해주는 방법입니다.
이를 통해 비록 다소 느리더라도 심플하게 아래와 같이 데이터를 수집할 수 있습니다.
위는 매개변수와 사용자함수를 복합적으로 사용해 만든 크롤링의 결과입니다. 200페이지 2,000개 분량의 뉴스기사를 정해놓은 양식대로 가져온 것을 볼 수 있습니다. 다만 문제는 수백 개 이상의 데이터를 모으는 과정에서 위에서 보이는 것과 같이 날짜 데이터를 제대로 가져오지 못해 null값이 발생했습니다. 그 외에도 2,000개라는 비교적 적은 양의 데이터를 모으는 과정에서도 꽤나 긴 시간을 잡아먹기도 했습니다.
하지만 이러한 단점을 감수하고도 POWER BI로 수집한 데이터들을 한 번 시각화해보겠습니다.
네이버 뉴스에서 국내여행을 키워드로 검색한 결과 2,000건을 워드 클라우드라는 기법으로 시각화한 결과입니다. 아무래도 한국여행이라는 것이 들어가있다보니 관광이나 한국, 국내여행과 같이 트랜드 파악에 불필요한 내용이 있어 해당 내용을 지워주겠습니다.
큰 의미없이 반복되는 단어를 제거해준 결과입니다. POWER BI 상에선 수백 개 이상의 데이터를 바로 수정하거나 반영하는 것이 어려워서 EXCEL이나 R과 같은 도구를 이용하시는 것을 추천합니다.
직관적으로 보이는 차이는 아무래도 코로나라는 키워드가 대두되었고, 특정 지역 이름이 많이 나오는 2019년에 비해 언택트나 여행 중개업체, 단체 이름 같은 것이 대두된다는 것 정도를 확인할 수 있습니다.
이후에는 PYTHON을 통해 본격적인 크롤러를 만들어서 대량의 데이터를 분석해보도록 하겠습니다.