ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [구글 스프레드시트] IMPORTHTML 로 외부 사이트 데이터 가져오기 - 나만의 크롤러 만들기!
    구글/구글 스프레드시트 2022. 9. 6. 23:16
    반응형

     

     

      간혹 외부 사이트의 정보를 주기적으로 나의 스프레드시트에 삽입하여 작업해야할 경우가 있습니다. 그럴때마다 손으로 긁어서 작업해서 귀찮을 때가 많은데요. 구글 스프레드시트는 IMPORTHTML, IMPORTXML 등 외부 사이트에서 간단하게 테이블을 가져올 수 있는 함수를 제공합니다. 가령 배당금이나 거래량 정보도 IMPORTHTML 등으로 가져올 수 있죠. 나만의 크롤러를 만들 수 있다고 할까요? (물론... 스프레드시트 상의 함수라 한계도 많습니다 ^^;;; )

     

    이번 포스팅에서는 IMPORTHTML을 이용해 외부 사이트의 정보를 가져오는 방법에 대해 살펴보겠습니다.

     

    IMPORTHTML 을 매우 좋은 함수이나, 스프레드시트 상의 함수라 분명히 한계도 많습니다. 해당 함수를 공부하기 전에 한계를 미리 알아두시기 바랍니다.

     

    <유의 사항>

    !! 당연하게도, IMPORTHTML 은 로그인이 필요한 사이트는 가져올 수 없습니다. !!

    !!  (우리나라 사이트처럼) 사이트 구성이 복잡한 사이트는 이용이 어려울 수 있습니다. !!

     

    그럼 IMPORTHTML에 대해 설명해 보겠습니다.


     

    IMPORTHTML 함수 형식과 예시

     

    IMPORTHTML 형식

    =IMPORTHTML( URL , 쿼리, 색인 )

     

    • URL - 조회할 페이지를 의미합니다. 문자열에 HTML을 포함해야 합니다.
    • 쿼리 - 원하는 데이터가 어떤 구조에 포함되었는지에 따라 'list' 또는 'table'입니다.
    • 색인 - URL을 조회한 HTML에서, 쿼리로 정의된 list 또는 table의 몇 번째 정보를 가져올지 정하는 숫자입니다. 1부터 시작합니다.

     

    가령, "http://smart-worker.tistory.com"에서 첫 번째 테이블 정보를 가져오고 싶다면, URL은 티스토리 주소를 입력하고 쿼리는 "table", 그리고 색인은 1로 정의하면됩니다... 무슨 말이냐고요???

     

    일단 아래 예시를 한 번 보면 이해하기가 편하실 것입니다.

     


     

    IMPORTHTML 사용 예시

    여기서는 인베스팅 닷컴에서 아래 위치에 있는 카카오의 주요 재무 정보를 가져오겠습니다.

     

     

     

     

    위 정보는 아래 링크의 첫 번째 table에 위치한 정보입니다.

     

    https://kr.investing.com/equities/kakao-corp-financial-summary

     

    이 정보를 아래와 같이 함수를 입력하면 카카오의 주요 재무 요약정보를 가져옵니다. 

     

    =IMPORTHTML("https://kr.investing.com/equities/kakao-corp-financial-summary", "table", 1)

     

    실제 구글스프레드 시트에서 출력값입니다.

     

     

    세번 째 인자는 테이블의 순서인데요. 여기서 1이 아니라 2를 입력하면 다음 table의 정보를 가져옵니다.
    두 번째 테이블은 대차대조표 이군요.

     

     

    아래 수식에서 세번째 인자를 2로 변경하였습니다.

    =IMPORTHTML("https://kr.investing.com/equities/kakao-corp-financial-summary", "table", 2)

     

    이 경우, 2번째 표를 출력하는 것을 확인할 수 있습니다.

     

    IMPORTHTML 은 테이블 정보를 반환하기 때문에, 특정 값을 뽑아 내려면 INDEX 함수와 함께 사용해야 합니다. INDEX 함수는 출력된 배열에서 가로, 세로 위치정보의 특정 값을 반환합니다. 가령 위의 정보에서 '22년 총매출 숫자를 출력하려면 아래와 같이 함수를 수정해야 합니다.

     

    =INDEX( IMPORTHTML("https://kr.investing.com/equities/kakao-corp-financial-summary", "table", 1), 2,2 )

     

    아래와 같이 1822314.72 이 출력됨을 확인할 수 있습니다.

     


    참고사항

    • 자바스크립트로 동적으로 정보를 로딩하는 사이트는 IMPORTHTML이 잘 동작하지 않을 수 있습니다. 예를 들어, 네이버 증권 사이트는 주가정보 가져오기가 잘 안되는 경우가 많습니다.

    • 테이블 안에 테이블이 있을 경우, 잘 동작하지 않을 수 있습니다. 지금은 잘 없지만, 과거 사이트 중에 테이블로 구조를 잡은 사이트는... 해당 함수를 사용하기 어렵습니다. 

    • 앞서도 언급했지만, 로그인이 필요한 사이트는 사용이 불가합니다.

     

    이상 구글 스프레드시트 IMPORTHTML 함수 설명이었습니다. 다음에는 이 함수로 배당금을 조회해보도록 하겠습니다.

    반응형

    댓글

Designed by Tistory.