본문 바로가기
재테크 (주식)

구글시트 IMPORTXML 함수를 이용한 data 크롤링 (재무정보 가져오기)

by 149c 2020. 9. 7.

[아래는 웹브라우저 "크롬(chrome)"을 기준으로 포스팅 합니다.] 

 

지난 포스팅에서 "구글 스프레드시트(이하 "구글시트")"의 googlefinance 함수를 이용해서,

다양한 주식 정보를 불러오는 방법을 알아봤습니다.

 

하지만,

해당 주식에 대한 "재무정보" 등도 한 눈에 확인하고 싶어졌습니다.

 

그래서 크롤링*을 한 번 배워볼까?...란 생각을 하게 됐습니다.

 

*크롤링이란? 크롤링(crawling) 혹은 스크레이핑(scraping)은 웹 페이지를 그대로 가져와서 거기서 데이터를 추출해 내는 행위다. 크롤링하는 소프트웨어는 크롤러(crawler)라고 부른다(출처 : 나무위키).

 

파이썬(Python, 프로그래밍언어)을 배워봐야 하나...싶었는데,

구글시트에서 구글파이낸스(GOOGLEFINANCE) 함수를 사용하는 메리트를 포기하고 싶지 않아,

구글 시트의 함수를 이용해서 웹 페이지의 data를 추출하는 방법을 알아보기로 했습니다.

 

제가 가져오고 싶은 정보는 아래의 "네이버금융"에서 제공하는 기업정보입니다.

 

출처 : 네이버 금융

 

위 "삼성전자"의 기업정보 화면에서 쭉 내려가보시면,

"기업실적분석"이 보입니다.

 

출처 : 네이버금융

 

 

제가 궁금한 정보는,

아래의 EPS와 PER(2020년 올해 연말 예상치)입니다.

 

 

연말에 예상되는 EPS, PER 값을 토대로 현재 주식가격과 비교를 해보려고 하는데요,

 

EPS와 PER 값을 구하는 이유는 주식 가치를 간략하게 계산해보기 위해서입니다.
PER = 현재 주식가격 / EPS(주당순이익)인데,
위 산식을 변형하면 결국
현재 주식가격 = EPS x PER로 구할 수 있습니다.

 

구글시트에서 함수를 이용해,

해당 웹페이지의 data를 불러오려고 합니다.

 

그래서 오늘 소개해드릴 구글 스프레드시트 함수는 IMPORTXML이며,

사용방법은 다음과  같습니다.

=importxml(url, Xpath)

 

구글시트에 다음과 같이 입력합니다.

 

1. 삼성전자의 예상 EPS를 불러오는 함수를 입력합니다.

=IMPORTXML(URL 입력 셀 좌표,Xpath 입력 셀 좌표)

 

 

 

이렇게 먼저 세팅 해놓고,

해당 웹페이지의 URL과 Xpath만 복사해서 입력하면 data를 불러올 수 있습니다.

 

2. 해당 웹페이지의 URL을 복사 >> 시트에 붙여넣기 합니다.

 

 

3. Xpath를 가져와봅시다.

 

삼성전자의 네이버금융 웹페이지 예상 EPS data의 xpath*를 확인합니다.

*XPath(XML Path Language)이란? W3C의 표준으로 확장 생성 언어 문서의 구조를 통해 경로 위에 지정한 구문을 사용하여 항목을 배치하고 처리하는 방법을 기술하는 언어이다(출처 : 위키백과).

 

가지고 오고자 하는 data 값에서 우클릭 

>>> "검사(N)" 클릭하면,

 

 

 

화면 오른편에 우리가 알지 못하는 미지의 세계(?)가 펼쳐집니다.

(오류 아닙니다. 긴장하지 마세요...)

 

 

이를 "크롬 개발자도구"라고 하던데요...(사실 뭔지 잘 모름...)

맨 위 창에 코드를 위, 아래로 움직이다보면,

왼쪽 화면에서 해당하는 data의 코드를 확인할 수 있습니다.

아래와 같이요.

 

 

이제 개발자 도구에 표시된 해당 코드를 복사를 해봅시다.

방법은,

마우스 우클릭  >> Copy >> Copy Xpath 

 

 

아래와 같이 복사가 됐군요!

다시 구글시트로 돌아와서 해당 셀에 붙여넣기 해줍니다.

 

그럼 아래와 같이 data가 불러져온 것을 확인할 수 있습니다.

 

 

예상 PER까지 불러오면.. 완성!

55,600원으로 계산되었군요.

 

 

[응용편]

 

눈치가 빠르신 분들은 감이오셨겠지만,

"TICKER(종목번호)"라는 셀을 추가한 이유가 있습니다.

 

아래 URL을 보시면,

 

URL의 제일 마지막이 삼성전자의 "종목번호(Ticker)"인 005930으로 끝나는 것을 확인할 수 있습니다.

 

다른 종목도 확인해보겠습니다.

예를 들어, SK케미칼 URL을 보시면...

 

 

URL의 마지막이 SK케미칼 종목번호인 285130으로 끝나는 것을 확인할 수 있습니다.

 

그럼 종목번호만 입력하면, URL주소를 얼마든지 변경할 수 있겠군요.

이 때 사용하는 구글시트 함수는,

여러개 셀의 내용 또는 여러개의 텍스트 문자열을 하나의 텍스트 문자열로 연결하는, 

 

CONCATENATE

 

...이며, 

 

사용방법의 예시는 다음과 같습니다.

=CONCATENATE("https://finance.naver.com/item/main.nhn?code=",종목번호)

 

종목번호가 입력된 셀 좌표를 입력하면,

해당 셀의 종목번호만 바궈가면 얼마든지 URL을 바꿀 수 있게 됩니다.

 

 

네, 맞습니다.

종목별 Xpath 값은 동일합니다.

그래서 위 삼성전자의 EPS Xpath 값과 PER Xpath값을 SK케미칼 항목에도 그대로 복사해서 붙여넣습니다.

나머지 함수와 산식도 동일하니, 복사 붙여넣기 합니다.

 

즉, 위와 같이 세팅해주면,

어떤 종목이든지,

종목번호만 입력하면,

해당 종목의 "예상EPS*예상PER" 값을 자동으로 불러올 수 있게 되는 것입니다.

 

오늘은 여기까지 포스팅 하겠습니다.

 

댓글