IMPORTXML
, IMPORTHTML
, GOOGLEFINANCE
등은 외부 데이터를 끌어오는 함수입니다. 사실 웹페이지 같은 외부데이터를 끌어오는 건 엑셀에도 2000년 초반부터 있던 기능입니다. DB를 연결하는 경우에도 아직 Bigquery만 지원하는 구글시트보다 엑셀이 훨씬 다양한 형식을 지원하고 있습니다. 그럼에도 불구하고 구글 시트에서 이 기능들을 소개하는 건, 엑셀보다 클릭 한 번이라도 덜 할 수 있기 때문입니다.
IMPORTHTML
은 HTML파일에서 LIST
와 TABLE
태그만을 조회해서 가져올 수 있는 함수입니다. IMPORTXML
은 XPATH라는 표준 문법을 통해 HTML, XML파일의 내용을 가져오는 함수입니다. 또한 두 함수 모두 정적인 페이지만을 조회할 수 있습니다. Javascript 등을 통해 사용자의 행동에 따라 페이지의 내용이 변경되는 동적 페이지는 조회할 수 없습니다. 구글 시트는 아직 사람 흉내를 내지 못합니다.
HTML 파일의 구조는 대충 아실 거라고 생각합니다. HTML은 웹페이지를 구성하는 형식으로 <a></a>
<img>
<table>
이런 Tag들로 구성되어 있습니다. XPATH는 이 tag의 구조를 파악해서 필요한 정보의 위치를 찾는 표준 문법입니다.
XPATH에 대한 자세한 사항은 다른 페이지(https://www.w3schools.com/xml/xml_xpath.asp )를 참조하십시오. 매우 자세하고 쓸데없는 설명이 잔뜩 있습니다. IMPORTXML의 구조와 이걸로 뭘 할 수 있는지를 이해하기 위해 간단한 구문만 알아 봅시다.
<aside> 💡 //tag : 하위 계층 모두에서 tag가 존재하는 항목을 가져옴 /tag : 바로 하위의 tag를 찾음 //tag[@속성 = '값'] : 모든 tag 중에서 특정 속성의 값이 "값"인 태그를 가져옴 //*[@id = 'id']: 현재 계층의 모든 하위 계층 중에서 id = 'id'인 항목을 가져옴
</aside>
크롬을 사용하시는 분들은 https://news.naver.com/ 를 열고 F12를 눌러봅니다. 아... 뭔가 개발자가 된 듯한 느낌을 주는 창이 하나 생깁니다. 여기에 Elements라고 되어 있는 탭이 이 웹페이지의 소스 코드를 계층화해서 보여주는 탭입니다. 아까 얘기한 <>로 구분된 태그들이 잔뜩 있습니다. 우리는 여기에서 "경제"뉴스를 가져와 볼 겁니다.
개발자 콘솔(네. 이름이 그렇습니다.)의 왼쪽 위를 보면 아래와 같은 아이콘이 있습니다. 클릭합니다.
이 아이콘을 누르면 실제 웹페이지의 Element들이 어떤 코드인지 찾아줍니다. 우리가 원하는 경제면 의 기사 리스트가 선택이 되도록 잘 조절해서 클릭을 해줍니다.
저 내용이 들어가있는 부분은 아래 그림과 같은 태그라고 표시가 됩니다. 태그 왼쪽의 삼각형 화살표를 눌러서 내용을 더 탐색해 봅시다.