본문 바로가기
AI 활용 방법

📊 엑셀 VBA로 네이버 증권 종목 데이터 크롤링하기 – 비동기 통신 & JSON 완전 정복!

by alfain 2025. 4. 22.
반응형

📌 디스크립션

"엑셀로 주식 데이터를 자동 수집할 수 있을까?"

파이썬 없이도 엑셀만으로 네이버 증권의 주식 종목 정보를 자동으로 불러오는 방법을 소개합니다.
이번 시간에는 초보자도 따라 할 수 있도록 VBA를 활용한 비동기 웹 크롤링
JSON 데이터를 파싱해 필요한 정보만 추출하는 기술을 순차적으로 설명합니다.

특히 네이버 증권처럼 비동기 통신(AJAX)을 사용하는 웹사이트의 데이터를 어떻게 가져오는지,
실전 예제를 통해 함께 학습해봅니다.


🧩 1. 네이버 뉴스 vs 네이버 증권 구조 차이


통신 방식 동기 (화면 정보 = HTML에 포함) 비동기 (정보는 JSON 응답으로 따로)
난이도 낮음 높음 (HTML에 정보 없음)
크롤링 방법 페이지 소스에서 데이터 추출 가능 네트워크 요청 분석 후 JSON 처리

즉, 뉴스 페이지는 단순 HTML 파싱으로 가능하지만,
증권 페이지는 네트워크 요청(URL)을 찾아 JSON을 분석해야 합니다.


🧠 2. 비동기 통신이란?

비동기(AJAX) 통신은 페이지 전체를 새로 고침하지 않고,
서버와 데이터를 주고받는 방식입니다.

예) 네이버 증권의 '상승', '하락' 버튼을 눌러도 페이지 주소는 그대로지만,
종목 리스트는 즉시 바뀝니다. 이 변화는 백그라운드에서 JSON 형태로 데이터를 받아오기 때문입니다.


🔍 3. 개발자 도구로 비동기 요청 찾기

  1. F12를 눌러 개발자 도구 열기
  2. Network 탭 클릭 후 ‘상승’ 버튼 클릭
  3. 새로 추가되는 요청 중에서 종목 리스트(JSON 형식)를 반환하는 URL을 찾음

🔑 이 URL은 우리가 원하는 종목 데이터가 담긴 핵심 API 주소입니다.


⚙️ 4. VBA로 비동기 JSON 데이터 요청하기

엑셀에서 Alt + F11로 VBA 편집기 열기 → 모듈 추가

📌 핵심 구조

 

FnRequest 함수는 WinHttpRequest를 이용해
GET 방식으로 서버에 요청을 보내고 결과(JSON)를 텍스트로 반환합니다.


🧰 5. JSON 파싱: 원하는 정보만 추출

네이버 증권의 응답 데이터는 복잡한 JSON 형식입니다.

 

🔄 VBA JSON 파서 사용

JsonConverter 모듈을 활용해 응답 텍스트를 객체로 변환합니다:

이후 루프를 통해 각 종목의 항목에 접근할 수 있습니다:

📌 이렇게 하면 엑셀에 종목코드, 종목명, 현재가, 시가총액이 자동으로 출력됩니다!


🔁 6. 다중 페이지 데이터 수집 (총 183개 종목)

기본 페이지에는 20개 종목만 표시됩니다.
다른 페이지는 URL의 파라미터 page=2, page=3 식으로 바꾸면 접근 가능하죠.

🔁 페이지 루프 구조

이렇게 하면 페이지를 바꿔가며 모든 종목을 자동 수집할 수 있습니다.


✅ 결과물


005930 삼성전자 67,700 1234567890000
373220 LG에너지솔루션 410,000 9876543210000
... ... ... ...

단순 반복 작업이었던 데이터를 클릭 한 번으로 자동 수집 가능!


🎯 활용 예시

  • 개인 포트폴리오 실시간 업데이트
  • 투자 보고서 자동화
  • 종목 필터링 기반 로직 연동
  • 실습용 데이터 수집 (학생, 금융강사)

📝 결론

네이버 증권처럼 비동기 AJAX 방식의 웹사이트도 VBA로 충분히 크롤링 가능합니다.
✔ 핵심은 Network 탭에서 실제 데이터 API URL을 찾는 것
✔ JSON 구조만 익히면 필요한 항목만 골라 엑셀로 자동 출력도 쉽게 구현됩니다.

“엑셀은 단순한 계산기를 넘어서
자동화의 세계를 연결해주는 가장 친숙한 프로그래밍 도구입니다.”

반응형