본문 바로가기

About 배우고 익히는법/Python

환율 데이터 웹스크래핑 -pandas.read_html [출처] [직장인 렙업! 파이썬] 환율 데이터 웹스크래핑 -pandas.read_html

매일 반복되는 업무, 
웹(web)에서 필요한 데이터를
자동으로 가져올 수 없나요?

복 업무를 단순화할 수 있는 방법에 대해서 직장인 누구라면 고민해 본 적이 있을 거예요. 

예를 들어 직무에 따라서는 거시경제 지표(환율, 금리, 주가 등)를 수집하기 위해서 매일 아침 출근하자마자 서둘러서 여기저기 사이트를 옮겨 다닌 경험이 있으실 거예요. 웹사이트를 하나하나 찾아다니며 Ctrl + C, Ctrl + V를 여러 번 반복해서 엑셀에 옮기는 작업은 여간 귀찮은 일이 아닐 수 없습니다. 

엑셀, 파워포인트 같은 오피스 직무 스킬에 파이썬(Python)을 하나 더 추가해보면 어떨까요. 파이썬이 PC에 설치되었다는 가정 하에서 포스팅을 이어가겠습니다. 


환율정보 조회

율정보를 조회할 수 있는 웹사이트는 네이버, 다음 등 포털뿐만 아니라 외환은행, 국민은행 등 금융기관 홈페이지, 기타 금융 정보 제공 사이트 등 정말 많습니다. 

외환 관련해서는 외환은행이 가장 정보제공이 빠르고 정확하겠지만, 금융기관 사이트는 보안 기능이 강화되어서 파이썬 라이브러리로 쉽게 정보를 수집하기가 어려워졌습니다. 

네이버 환율조회(링크 : https://search.naver.com/search.naver?where=nexearch&sm=top_hty&fbm=1&ie=utf8&query=%ED%99%98%EC%9C%A8%EC%A1%B0%ED%9A%8C) 화면에서 웹스크래핑을 하는 방법을 소개하겠습니다.



pandas 라이브러리

(talbe) 형식으로 정리된 자료는 pandas 라이브러리를 먼저 시도하면 좋습니다. read_html 함수를 사용하면 html 페이지에 <table> tag로 구성된 부분을 모두 가져와서 표 리스트(list)를 만들어 주기 때문입니다. (다만, 자바스크립트로 만들어진 동적 웹페이지에서는 작동하지 않는 경우가 많습니다.) 

위 링크를 통해 네이버 환율조회 화면을 살펴보면, 미국 달러 환율 그래프가 있고 하단에 미국, 일본 등 8개 국가 통화에 대한 원화 환율(매매기준율)이 표 형식으로 정리되어 있습니다.  

Step 1: pandas 라이브러리를 불러와서 pd라는 이름으로 설정합니다. 

import pandas as pd

Step 2: 네이버 환율조회 링크를  url이라는 변수에 지정합니다.  

url ='https://search.naver.com/search.naver?where=nexearch&sm=top_hty&fbm=1&ie=utf8&query=%ED%99%98%EC%9C%A8%EC%A1%B0%ED%9A%8C'


Step 3: pandas.read_html 함수에 url을 인자로 전달하고, 실행한 결과를 tables 변수에 지정합니다. 

tables = pd.read_html(url)



테이블 내용 확인하기 (tables 변수)

tables 내용을 출력하면, 리스트를 나타내는 [  ] 안에 콤마(,)로 구분된 2개의 표가 있습니다. 

직장인 파이썬

tables에 몇 개의 요소(표)가 있는지 확인하려면 len 함수를 사용합니다. 2개의 요소(표)가 있는 것을 알 수 있습니다. 

파이썬 len 함수

우리가 수집하려고 하는 환율정보는 2번째 표이기 때문에 리스트 인덱싱을 사용합니다. tables[1]이라고 입력하면 2번째 표를 나타냅니다. (파이썬에서는 순서를 셀 때 1이 아니라 0부터 시작합니다.)

pandas 라이브러리 read_html
pandas 라이브러리 read_html



엑셀(Excel) 파일 저장하기

율 조회표를 엑셀 파일로 저장하는 코드를 추가하겠습니다. 편의상 tables[1]에 들어 있는 표(dataframe 타입으로 저장되어 있음)를 df 변수에 지정합니다. 

df = tables[1]

pandas 라이브러리에 있는 to_excel 함수를 사용하면, dataframe 타입의 표를 엑셀 파일로 바로 저장할 수 있습니다. 

df.to_excel('exchange rate.xlsx')


엑셀 파일을 열면 아래와 같이 표 형태로 저장됩니다. 

요약하며....

드를 모아서 정리하면 총 5줄입니다. 간단하게 환율 정보 정리가 가능하지 않나요? 직장인 렙업을 위해 사무환경에서 자동화할 수 있는 작업들에 대하여 노하우를 계속 공유하겠습니다.