구글 시트를 이용해 10분만에 만든 김영민 교수님 글 모음 (웹크롤링)

추석이란 무엇인가‘라는 칼럼으로 일약 전국구 스타가 되신 서울대 김영민 정치외교학부 교수님. 최근에 출판하신 ‘공부란 무엇인가’라는 책도 화제가 되고 있다.

평소에 다른 사람들이 간헐적으로 공유해주는 칼럼만 읽다가, 문득 이 교수님이 쓰신 칼럼을 모아서 읽고 싶다는 생각이 들어 검색을 해보았다. 마침 나와 똑같은 생각을 하신 분이 있어서 그 글을 클릭해보았더니…!

2019년 상반기까지만 업데이트가 되어있었다. 결국 나의 ‘구글 시트로 쓸데없는 것을 만들기 좋아하는 전혀 신비하지 않은 잡학 취미‘ (구쓸신잡?) 가 발동하여 교수님의 칼럼을 긁어 모아놓은 구글 시트를 만들었다.

김영민 교수 글 모음 (구글 스프레드시트)

트위터에 공유하였더니 ‘고생하셨다’고 격려해주신 분이 계셨으나, 사실은 전혀 고생이라고 할만한 것이 아니었기에 블로그에 올려본다. 🙂

첫번째 단계) 어떤 매체에 어떤 칼럼이 있는지를 검색한다.

네이버 뉴스 페이지에 가서 ‘김영민 서울대 정치외교학부 교수’를 검색한다. 구구절절 적는 이유는 ‘김영민’이라는 이름이 동명이인이 많기 때문.

네이버 뉴스 검색 결과

검색 결과 화면 우측에 보면 ‘뉴스검색 RSS보기’라는 메뉴가 있다. 이 링크를 복사하여 이용하면 굳이 네이버 뉴스에 검색어를 항상 입력해보지 않아도 구글 시트에서 importfeed 함수를 이용해 검색 결과를 출력할 수 있다.

=importfeed("http://newssearch.naver.com/search.naver?where=rss&query=%EA%B9%80%EC%98%81%EB%AF%BC%20%EC%84%9C%EC%9A%B8%EB%8C%80%20%EC%A0%95%EC%B9%98%EC%99%B8%EA%B5%90%ED%95%99%EB%B6%80%20%EA%B5%90%EC%88%98&field=0&nx_search_query=&nx_and_query=&nx_sub_query=&nx_search_hlquery=&is_dts=0")
구글 시트에서 불러온 네이버 뉴스 검색 결과

검색 결과를 훑어 보면 다음과 같은 매체에 칼럼을 기고하고 있는 것을 찾아낼 수 있다.

  • 동아일보 – 김영민의 본다는 것은
  • 한국일보 – 한국이란 무엇인가
  • 중앙일보 – 김영민의 생각의 공화국
  • 중앙선데이 – 김영민의 공부란 무엇인가

두번째 단계) 각 칼럼을 모아서 볼 수 있는 웹페이지 주소를 찾는다.

구글이나 네이버 검색을 이용해 각각의 칼럼을 모아서 볼 수 있는 링크를 찾아보자.

세번째 단계) 각 웹페이지에서 importxml 함수를 이용해 필요한 정보를 가져온다.

동아일보 페이지를 예로 들어보자.

해당 웹페이지에서 크롬 개발자 도구(마우스 우클릭 후 > 검사, 혹은 F12)를 이용하면 내가 가져오고 싶은 부분이 어떤 html tag로 구성이 되어있는지를 볼 수 있다.

<div class="rightList">
 <a href="https://www.donga.com/news/Opinion/article/all/20200831/102713285/1">
  <span class="tit">현실의 끝자락, 파도치는 해변으로[김영민의 본다는 것은]</span>
  <span class="txt">※이 글에는 ‘폭풍 속으로’와 ‘그 여름 가장 조용한 바다’의 스포일러가 포함되어 있습니다.     서핑 영화는 현실 도피의 영화다. 현실이 힘겨운 사람들은 현실의 가장자리인 해변으로 간다. 거기서 더는 나아갈 수 없는 인간의 한계와 현실의 강고함을 인지한다. 잠시나마 현실을 떠나고 …</span>
  <span class="date">2020-08-31 03:00</span></a></div>

여기에서 내가 필요한 부분만 importxml 함수를 이용해서 쏙쏙 뽑아오면 된다.

= importxml(웹페이지주소,"//div[@class='rightList']/a/span[@class='tit']")
  • 간단한 함수 해석
    • div class=’rightList’라는 태그 를 먼저 찾고
    • 그 다음에 a 라는 태그를 지나
    • span class=’tit’로 묶여 있는 텍스트를 가꼬와라

날짜 정보 역시 함수를 살짝만 수정하여 가져온다.

=importxml(웹페이지주소,"//div[@class='rightList']/a/span[@class='date']")

마지막으로 쉽게 링크를 열어보기 위한 각 칼럼의 웹페이지 주소까지.

=importxml(웹페이지주소,"//div[@class='rightList']/a/@href")

각각의 소스에서 가져온 데이터를 한 시트에 잘 모아서 정리해주면 끝!

이렇게 구글 시트에서 제공하는 importxml (혹은 importhtml, importfeed, importdata) 함수를 잘 활용하면 노가다가 될 수 있는 웹데이터 수집 및 가공을 쉽게 할 수 있다.

일전에 지인분이 부탁하셔서 타사 쇼핑몰에 입점된 모든 브랜드 정보 가져오기 같은 것도 도와드린 적이 있는데, 업무에 많이 도움됐다고 하셔서 뿌듯했던 기억이 있다.

참고로 해당 글 모음 구글 시트 링크는 여기

근데 정리하다보니 김영민 교수님은 몸과 손이 몇개이신건지. 동시다발적으로 3-4개의 매체에 동시 연재를 하고 있으시다. 교수님의 지치지 않는 생산력을 배워야겠다.

%%footer%%

3 thoughts on “구글 시트를 이용해 10분만에 만든 김영민 교수님 글 모음 (웹크롤링)”

    1. 어머나 저런; 퍼머링크 수정하면서 까먹고 있었네요. 세심한 눈길… 감사드립니다. ^0^

Leave a Reply