네이버에서 환율목록이나, 주가지수 목록 등의 목록형자료를 엑셀로 가져오기 – 문제점과 해결책

네이버에서 환율목록이나, 주가지수 목록 등의 목록형자료를 엑셀로 가져오기 – 문제점과 해결책

엑셀의 웹 데이터 가져오기 기능

예전 글에서 웹에서 엑셀로 데이터를 자동으로 가져오는 방법을 소개한 바 있었다.

이러한 방법을 이용하면, 네이버 등과 같은 포털 등에서 주가정보나, 환율 정보 등과 같이 웹상에 있는 정보를 엑셀로 자동으로 가져올 수 있고, 이처럼 가져온 웹상의 데이터가 온라인상에서 갱신되면 엑셀로 가져온 데이터도 연동하여 자동 갱신되므로 편리하다. 또한 이렇게 웹상의 데이터를 엑셀로 자동으로 가져오는 것은 다양한 차트도 연동하여 자동 갱신되도록 구현할 수 있는 편리한 점도 있다.

만일 이처럼 웹의 데이터를 엑셀로 가져오는 방법이 생소한 경우에는 다음 글을 먼저 참조하기 바란다.

https://blog.naver.com/mythee1/223049104063

목록형 데이터를 가져올 때의 문제점

그런데, 네이버의 웹 자료를 엑셀로 불러들이다 보면….

네이버 웹페이지에는 정보가 있지만, 위에 소개한 방법만으로는 엑셀로 데이터를 가져올 수 없는 경우들이 있다. 특히 환율 목록이나 주가지수 목록 같은 목록형 자료들의 경우 대부분 이런 경우가 많았다.

대개의 경우 단편적인 정보보다는 목록 형태의 데이터들이, 엑셀로 가져올 때, 차트를 그린다거나, 향후 예측 등의 기초자료로 사용할 수 있어 활용도가 더 높다고 할 수 있는데, 목록 형태로 된 자료들은 이런 경우가 꽤나 많았다.

일례로, 다음과 같은 환율정보 페이지 하단의 일별 환율 시세표를 엑셀로 가져오고자 하는 경우,

통상적이라면, 해당 웹페이지의 URL 주소를 복사하여,

엑셀에서 해당 URL 주소를 붙여 넣고, 데이터 가져오기를 시도해 보면

해당 목록의 윗부분까지만 불러들여지고, 정작 필요로 했던 부분은 누락된 상태로 표시된다.

즉, 가져오고자 했던 데이터는 다음과 같은 목록형 데이터였는데,

정작 이 부분은 위의 방법만으로는 가져올 수가 없어, 해결책이 없다면 위와 같은 방법으로 데이터를 가져올 수 있는 다른 사이트를 찾는 수밖에 없었다.

원인 및 해결책

이러한 현상이 생기는 원인을 추정해 보면, 이러한 목록형 데이터들은 해당 웹페이지의 일부이기는 하지만, 일종의 외부 데이터를 하나의 프레임 형태로 해당 페이지에 연결시켜 놓은 상태인 때문에 발생하는 것으로 보인다. 즉, 엑셀은 URL 주소를 이용하여, 해당 웹페이지에 기재되어 있는 정보는 가져올 수 있지만, 해당 페이지의 프레임에서 필요에 따라 참조하는 외부 데이터까지는 가져오지 못하기 때문에 발생하는 문제로 보인다.

그런데, 이러한 오류 발생의 원인을 생각하고 한 단계 응용을 하면, 해결책이 있으며, 웹상의 외부참조를 이용하는 목록형 데이터들도 엑셀로 자유롭게 불러들일 수가 있다. 바로 URL 주소 대신, 해당 프레임에서 참조하는 외부 주소를 이용하여 엑셀에서 데이터 가져오기를 하는 것이다.

실제 사용 방법을 예를 들어 설명하면…

먼저, 해당 웹페이지에서 엑셀로 가져오려는 부분을 마우스로 클릭하여 선택한 상태에서 마우스 우측 버튼의 메뉴를 살펴보면, 다음과 같이 “프레임 소스 보기” 메뉴를 선택해 준다.

그러면, 해당 목록에 해당되는 프레임의 소스가 다음과 같이 코드 형태로 열리게 되며,

해당 코드를 살펴보면, 이 프레임의 목록 값들의 원천 데이터에 대한 참조 URL 주소를 발견할 수가 있다.

이렇게 찾은 외부참조 주소를 마우스로 클릭해 보면 다음과 같이 새로운 창이 열리면서, 목록 형태로 필요했던 데이터들이 나타나 해당 주소가 바로 필요한 데이터의 주소임을 확인할 수 있다.

이제 이 주소를 복사한 후,

엑셀 메뉴 중 “데이터” –> “웹”을 순차적으로 선택하고,

그 결과로 생성되는 다음의 대화창의 URL에 복사해 둔 외부참조 주소를 붙여넣기 해준다.

그리고 확인을 눌러주면, 다음과 같이 미리 보기 창에서 의도한 대로 환율 목록이 엑셀로 불러들여지는 것을 볼 수 있고,

“로드”를 해주면 엑셀 시트에 정상적으로 입력되는 것을 확인할 수가 있다.

이러한 환율 목록이나 주가지수 목록들은 다음과 같이 여러 페이지로 구성되는 게 일반적인데,

각각의 페이지별 데이터가 필요하면, 다음과 같이 해당 페이지별로, 엑셀에서 하나씩 가져오기를 해주어야 한다.

즉, 만일 환율 목록의 3번째 페이지라면 다음과 같이 입력해 주고 확인하면

다음과 같이 해당 목록의 3번째 페이지가 선택적으로 엑셀에 입력되게 된다.

참고로, 위와 같이 목록이 여러 페이지인 경우, 엑셀의 각각의 시트로 가져온 각각의 페이지들은 서로 병합하거나, 하나의 시트로 위치를 변경하는 것도 가능하다.