AI를 활용한 Yahoo! Finance 주가 자동 수집 방법 완벽 해설 (실측 34초 만에 221건 확보)
요약
본 기사는 Yahoo! Finance 등에서 주가 정보를 효율적으로 수집하고 분석하는 다양한 방법을 해설합니다. 종목 코드, 현재가, 거래량 등의 데이터를 수작업, Excel 함수, Python/API, 노코드 툴 등 여러 방식으로 가져올 수 있으며, 목적과 필요 신선도에 따라 적합한 방식을 선택해야 합니다.
핵심 포인트
- 주가 데이터는 수동 입력보다 자동화 도구(Python, API) 사용이 효율적입니다.
- 데이터를 분석할 때는 반드시 타임스탬프와 데이터의 획득 시점(실시간/지연)을 기록해야 합니다.
- 수집 목적에 따라 Python(`yfinance`) 또는 노코드 툴(Octoparse) 등 적합한 방법을 선택해야 합니다.
- 자동 매매나 투자 판단에는 증권사나 정식 데이터 벤더의 정보를 우선 사용해야 합니다.
주가 정보 수집이란 종목 코드, 현재가, 시가, 고가, 저가, 종가, 거래량 등을 비교 및 분석하기 쉬운 형태로 지속적으로 가져오는 것을 말합니다. Yahoo! Finance를 매일 열어 보유 종목의 숫자를 Excel에 복사하고 있다면, 그 작업은 수동 입력, 표 계산 기능, API, Python, 노코드 툴 중 어떤 방식으로든 효율화할 수 있습니다.
먼저 결론부터 말씀드리자면, 1~3개 종목을 가끔 확인할 정도라면 수작업이나 Excel로도 충분합니다. 하지만 Python으로 분석까지 진행하려면 yfinance를 사용하고, 일본 주식의 공식 데이터를 중시한다면 J-Quants API가 적합하며, 코드를 작성하지 않고 여러 종목을 동일한 형태로 모으고 싶다면 Octoparse(옥토파스・옥토패스)의 전용 템플릿이 선택지가 됩니다.
다만, '최신 주가'와 '실시간 주가'는 같지 않습니다. 표시나 전송에는 지연이 있으며, 데이터 이용 조건도 제공원마다 다릅니다. 투자 판단이나 자동 매매에 사용할 경우에는 증권사나 정식 데이터 벤더가 제공하는 정보를 우선하여 사용해 주세요.
본 기사는 데이터 수집 방법의 해설을 목적으로 하며, 특정 종목의 매매를 권장하는 것이 아닙니다. 대상 사이트의 이용 약관, 데이터 권리, 재이용 조건을 확인한 후 이용해 주시기 바랍니다.
주가 정보 수집 시 다루는 것은 현재가뿐만이 아닙니다. 목적에 따라 다음과 같은 항목들을 조합합니다.
| 항목 | 내용 | 주요 용도 |
|---|---|---|
| 종목 코드 | 상장 종목을 식별하는 코드 | 여러 데이터의 결합, 종목 관리 |
| ... | ||
| 여러 종목을 지속적으로 추적할 경우, 획득 일시가 특히 중요합니다. 같은 '현재가'라도 획득한 시간이 다르면 단순 비교를 할 수 없습니다. 수집 결과에는 반드시 타임스탬프를 남기고, 데이터가 일별(日足)인지, 지연 값인지, 실시간 전송인지도 기록해 두어야 합니다. |
대표적인 방법은 수작업, 공식 다운로드, Excel, Python/API, 노코드 툴의 5가지 계통입니다. 이 중 어느 하나가 항상 정답인 것은 아니며, 종목 수, 업데이트 빈도, 필요한 신선도, 프로그래밍 경험에 따라 적합한 방법이 달라집니다.
가장 쉬운 방법은 Yahoo! Finance에서 개별 종목 페이지를 열고 필요한 숫자를 Excel에 붙여넣는 방식입니다. 설정이 필요 없기 때문에 몇몇 종목을 한 번만 확인할 용도에는 적합합니다.
반면, 종목 수가 늘어날수록 코드 혼동, 자릿수 입력 실수, 획득 시간의 편차가 발생하기 쉽습니다. 매일 같은 작업을 반복하는 용도에서는 수작업 시간보다 검산이나 수정 부담이 더 커집니다.
Yahoo! Finance는 주가 데이터가 필요한 사용자에게 VIP 클럽의 '시계열 데이터 다운로드'를 안내하고 있습니다. 공식적으로 준비된 방법으로 이력 데이터를 가져와 Excel에서 분석하고 싶은 사람들에게 적합합니다.
장점은 웹페이지의 HTML 구조를 파싱할 필요가 없고, 표 형식의 데이터로 다루기 쉽다는 점입니다. 반면에, 이용 가능한 기능이나 대상 범위는 서비스 계약 조건에 따라야 하므로, 자유로운 항목 설계나 여러 사이트를 가로지르는 수집에는 적합하지 않습니다.
Excel에는 주가 데이터형, STOCKHISTORY 함수, Power Query 등의 선택지가 있습니다. 획득한 숫자를 그대로 계산식, 피벗 테이블, 그래프에 전달할 수 있다는 점이 강점입니다.
다만, 사용 가능한 기능은 Microsoft 365의 계약이나 Excel 버전에 따라 다릅니다. 또한, 해외 주식과 일본 주식 간 대응 상황이 달라 기대했던 종목이 인식되지 않아 #N/A가 될 수도 있습니다.
Google 스프레드시트에서는 GOOGLEFINANCE 함수나 Apps Script를 이용할 수 있지만, 획득 가능한 시장・항목・업데이트 빈도에 제한이 있습니다. HTML을 직접 참조하는 IMPORTHTML이나 IMPORTXML은 JavaScript로 그려지는 페이지나 구조 변경에 취약하므로, 지속적인 운영을 위해서는 주기적인 확인이 필요합니다.
'yahoo finance api 일본 주식'으로 검색하면 Python 라이브러리인 yfinance를 사용하는 예제가 많이 보입니다. yfinance는 API 키 없이 시도해 볼 수 있는 비공식 라이브러리이며, Yahoo 공식 API가 아닙니다.
일본 주식의 경우, 증권 코드에 도쿄증권거래소를 나타내는 .T를 붙이는 형식이 일반적입니다. 예를 들어 토요타 자동차는 7203.T, 소니 그룹은 6758.T와 같이 지정합니다.
import yfinance as yf
symbols = [
짧은 코드로 여러 종목을 가져와 Excel에 저장할 수 있다는 것은 큰 장점입니다. 한편, 비공식 라이브러리이기 때문에 데이터 원본의 사양 변경, 결손, 열 구조 변경에 대비해야 합니다. 여러 종목의 경우 열이 계층 구조가 될 수도 있으므로, 실제 `prices.columns`를 확인한 후에 후속 처리를 구현하는 것이 좋습니다.
일본 주식의 공식 데이터를 중시한다면, JPX 그룹에서 제공하는 J-Quants API가 후보입니다. 주가 네 가지 값(四本値), 상장 종목 목록, 재무 정보 등을 API로 가져올 수 있습니다. 다만, 취득 가능 기간, 업데이트 타이밍, 호출 횟수는 플랜에 따라 다릅니다. 매매 주문이나 더 높은 실시간성이 필요하다면, 계약 중인 증권사에서 제공하는 API도 비교 대상에 포함됩니다.
Python이나 VBA를 작성하지 않고 여러 종목을 같은 형식으로 정리하고 싶다면, 노코드(no-code) 웹 스크레이핑 툴이 후보가 됩니다. Octoparse의 Yahoo Finance용 템플릿을 사용하면, 처음부터 추출 플로우를 설계하는 수고를 줄일 수 있습니다.
전용 템플릿의 장점은 입력 항목과 출력 항목이 미리 설정되어 있다는 것입니다. 종목 코드를 준비하고 취득 결과를 확인한 후 실행하기 때문에, HTML, XPath, Python 지식이 없어도 시작하기 쉽습니다.
선정할 때는 '무료 여부'뿐만 아니라 데이터 범위, 신선도(鮮度), 자동화, 유지보수, 출력처를 동시에 비교해야 합니다.
| 방법 | 일본 주식 | 코드 | 여러 종목 | 주기적 실행 | Excel/CSV | 주요 장점 | 주요 주의점 |
|---|---|---|---|---|---|---|---|
| 수작업 | 대응 | 불필요 | △ | × | ○ | 바로 시작 가능 | 전사(轉寫) 실수, 지속 작업에 부적합 |
| ... |
목적별로 정리하면 다음과 같이 선택하기 쉽습니다.
- 몇몇 종목을 가끔 확인할 때: 수작업 또는 Excel
- 과거 일봉 데이터를 Python으로 분석할 때: yfinance 또는 J-Quants API
- 정규 데이터를 업무 시스템에 통합할 때: J-Quants 또는 증권사 API
- 코드를 작성하지 않고 여러 종목을 주기적으로 수집할 때: Octoparse
- 매매 판단이나 주문과 직결시킬 때: 증권사 등의 정식 배포 서비스
Kabutan(株探)이나 Yahoo! Finance 등에서 여러 종목의 주가, 거래량, 전일 대비 등을 수집하는 경우, 수작업으로는 시간이 걸리고 Python이나 API를 이용하려면 프로그래밍 지식이나 설정/유지보수 수고가 필요합니다.
여기서 추천하고 싶은 것이 AI를 활용하여 주가 데이터를 자동 수집할 수 있는 Octoparse(옥토파스・옥토패스)입니다.
Octoparse는 프로그래밍이 필요 없이 웹사이트에서 필요한 정보를 추출하여 Excel이나 CSV 등으로 출력할 수 있는 데이터 수집 툴입니다. 게다가 새로 출시된 AI Agent 기능 덕분에, 기존처럼 수집 항목이나 조작 절차를 처음부터 설정하지 않아도 '원하는 주가 데이터'를 자연어로 전달하기만 하면 AI에게 수집 작업을 맡길 수 있게 되었습니다.
AI Agent로 선택할 수 있는 3가지 데이터 수집 방법
예를 들어, '도요타, 소니, 닌텐도의 최신 주가, 전일 대비, 거래량을 목록으로 만들어줘'라고 지시하기만 하면, 목적에 따라 다음 3가지 방법 중 하나로 데이터 수집을 진행할 수 있습니다.
① AI 기반 템플릿 제안: AI가 수집 목적에 맞는 기존 템플릿을 제안합니다. 예를 들어, Yahoo! Finance용 템플릿을 이용하면, 대상 종목 등의 필요한 조건을 입력하기만 하면 미리 설정된 항목을 효율적으로 수집할 수 있습니다.
② Browser Use: AI가 브라우저를 직접 조작하여 주가 정보 사이트를 열람하면서 필요한 데이터를 찾고 가져옵니다. 여러 페이지를 수동으로 열어 정보를 복사하는 수고를 줄이고 싶을 때 유용합니다.
③ Cloud Agent (Beta): AI가 수집 작업의 생성부터 실행까지 자동적으로 진행합니다. 사용자가 취득 항목을 하나씩 선택하거나 복잡한 워크플로우를 구축할 필요 없이, 자연어로 주가 데이터 수집을 시작할 수 있습니다.
Octoparse의 강점은 단순히 AI로 데이터를 가져올 수 있다는 점뿐만 아니라, 수집 작업을 지속적으로 자동화하기 쉽다는 것입니다.
개발/유지보수 부담 경감: Python 환경 구축이나 스크레이핑 코드 작성이 불필요합니다. AI Agent나 기존 템플릿을 사용하면 초보자도 주가 데이터 수집을 시작하기 쉽습니다.
여러 종목・여러 사이트 수집 대응: 주가뿐만 아니라 전일 대비, 거래량, PER 등 대상 사이트에 게재된 필요한 항목을 모아서 취득하고 비교/분석에 활용할 수 있습니다.
클라우드에서 주기적으로 수집 가능:
해당 수집 작업에 일정을 설정하면, PC를 켜 놓지 않아도 매일/매주 데이터를 자동으로 가져올 수 있습니다.
다양한 수집 수단 활용 가능:
AI Agent로 원활하게 수집되지 않더라도, 기존 템플릿이나 커스텀 작업을 고려할 수 있어 사이트나 용도에 맞춰 수집 방법을 변경할 수 있습니다.
실제 검증에서는 AI Agent를 사용하여 자동차 관련 주가 정보 32건을 단 1분 5초 만에 가져올 수 있었습니다. 데이터 확보 시간과 결과는 대상 사이트 및 수집 조건에 따라 다르지만, 기존의 수동 작업이나 작업 설정의 번거로움을 줄일 수 있다는 것을 알 수 있습니다.
한편, 밀리초 단위의 실시간 주가나 주문 체결에 사용하는 데이터에는 증권사 공식 API 등이 적합합니다. Octoparse는 여러 종목의 정보 수집, 시장 조사, 주가 비교, 주기적인 데이터 업데이트를 효율화하고 싶은 분들에게 적합합니다.
- Python 환경을 구축하고 싶지 않은 경우
- 여러 종목을 동일한 열 구성으로 정리하고 싶은 경우
- 매일 또는 매주 같은 조건으로 수집하고 싶은 경우
- 수집 결과를 Excel에서 가공하고 싶은 경우
- 코드 오류 대응이나 유지보수를 줄이고 싶은 경우
반면, 밀리초 단위의 시세(行情), 틱 데이터(tick data), 주문 체결을 필요로 하는 자동 매매에는 적합하지 않습니다. 그러한 용도에서는 정식 실시간 전송 또는 증권사 API를 사용해야 합니다.
템플릿을 사용할 경우, 웹페이지 상에서 가져올 항목을 하나씩 선택하는 커스텀 작업과는 조작 방식이 다릅니다. 기본적인 흐름은 '템플릿 찾기 → 파라미터 입력하기 → 실행 환경 선택 → 출력하기'입니다.
Octoparse를 다운로드하여 실행하고 계정에 로그인합니다. 홈 화면 또는 템플릿 목록에서 바로 사용할 수 있는 템플릿을 검색할 수 있습니다.
검색창에 'Yahoo Finance'를 입력하고 목적에 맞는 템플릿을 선택합니다. 실행하기 전에, 템플릿의 대상 사이트, 입력 형식, 실행 모드, 출력 항목을 확인하세요.

설정을 저장한 후 '실행(Run)'을 클릭하고 로컬 수집 또는 클라우드 수집 중 하나를 선택합니다.
- **로컬 수집 (Local Collection)**: 자신의 PC에서 실행합니다. 소량 데이터 테스트나, 우선 결과를 확인하고 싶을 때 적합합니다. 실행하는 동안 Octoparse 앱을 켜 두어야 합니다. -
- **클라우드 수집 (Cloud Collection)**: Octoparse의 클라우드 상에서 실행합니다. 여러 종목, 주기적 실행, PC를 닫은 상태에서의 수집에 적합합니다. 이용 가능 여부는 계약 플랜과 템플릿의 실행 모드를 확인하세요.
처음부터 대량의 종목을 입력하기보다는, 2~3개 종목으로 테스트하여 코드, 종목명, 가격, 통화가 올바른지 확인한 후 범위를 늘리는 것이 안전합니다.
작업이 완료되면 데이터 미리보기(data preview)에서 다음 사항들을 확인합니다. 여기서는 단 34초 만에 221건의 데이터를 가져왔습니다.
- 증권 코드와 종목명이 일치하는지
- 가격과 통화가 예상대로인지
- 전일 대비 및 등락률이 별도의 열로 분리되어 있는지
- 수치에 쉼표(comma), 통화 기호, 불필요한 공백이 남아있지 않은지
- 빈칸이나 중복 행이 없는지
- 데이터 확보 일시를 추적할 수 있는지
'데이터 내보내기(Data Export)'에서 CSV 또는 Excel을 선택합니다. 출력 후 Excel에서 수치로 계산하려면, 가격이나 거래량이 문자열 형태가 아닌지 확인하세요.
지속적으로 저장하려면 파일명이나 시트에 확보일을 넣거나, 데이터 자체에 확보일시 열을 추가합니다. 일별 데이터를 하나의 표에 추가하면, 값의 움직임 비교나 독자적인 차트 작성에도 사용할 수 있습니다.
클라우드 수집을 이용할 수 있다면, 매일, 매주, 지정 요일 등의 스케줄을 설정할 수 있습니다. 일본 주식 종가를 기록하려면, 시장 마감 직후가 아니라 대상 페이지의 업데이트가 완료되는 시간도 고려하여 실행 시간을 정해야 합니다.
짧은 간격으로 여러 번 실행한다고 해서 정확해지는 것은 아닙니다. 필요한 신선도에 맞춰 빈도를 설정하고, 대상 사이트에 과도한 부하를 주지 않도록 합니다.
Octoparse를 다운로드하여 실행하고 계정에 로그인합니다. 홈 화면 또는 템플릿 목록에서 바로 사용할 수 있는 템플릿을 검색할 수 있습니다.
Octoparse 홈페이지 또는 본인 계정의 마이페이지에 있는 AI 어시스턴트를 통해 자연어만으로 데이터 수집을 시작합니다. 예를 들어, AI에게 '자동차 최신 주가 정보를 수집해 줘'라고 지시합니다.
여기서는 'Cloud Agent' 모드를 선택하여 데이터 자동 수집을 이용할 수 있습니다. 작업 실행이 완료되면 '작업 보기(View Task)'를 클릭하고, 데이터 확인 및 내보내기를 진행할 수 있습니다.

만약 앞으로도 주기적으로 데이터를 수집하고 최신 데이터로 업데이트하고 싶다면, '주기적 실행(Schedule)'을 클릭하여 수집 일정을 설정하세요.

주가 데이터는 단순히 수집하는 것만으로는 가치가 없습니다. Excel로 출력한 후의 용도를 먼저 정해두면 필요한 필드를 고르기 쉬워집니다.
등락률을 숫자로 변환하고 내림차순으로 정렬하면, 그날 크게 상승한 종목을 확인할 수 있습니다. 조건부 서식을 사용하여 플러스는 빨간색, 마이너스는 파란색으로 지정하면 가독성도 높아집니다.
당일 거래량을 과거 평균 거래량으로 나누면, 평소보다 거래가 증가한 종목을 찾을 수 있습니다. 다만, 비교할 기간이나 주식 분할의 영향을 고려해야 합니다.
종목 코드, 취득일, 종가를 세로 형태로 저장해 두면, 피벗 테이블이나 꺾은선 그래프를 만들기 쉽습니다. 매일 파일을 따로 저장하는 것보다 하나의 이력 테이블에 추가하는 설계가 분석에 더 적합합니다.
보유 종목, 고배당 후보, 결산 발표 예정, 거래량 급증 등 목적별로 시트를 나눌 수 있습니다. 원본 데이터를 직접 수정하지 않고 분석용 시트에서 참조하는 형태로 하면, 재취득했을 때도 깨지기 어렵습니다.
주가 스크레이핑은 기술적으로 취득 가능한지에 의해서만 판단해서는 안 됩니다. 데이터 제공처의 이용 조건, 저작권, 접근 부하, 재사용 범위 등을 확인해야 합니다.
특히 Yahoo! JAPAN은 공식 도움말에서 야후 파이낸스에 게재된 정보를 프로그램으로 기계적으로 취득하는 행위를 금지한다고 안내하고 있습니다. 또한, 게재 정보의 전용, 복제, 외부 배포, 판매를 포함한 상업적 이용에도 제한이 있습니다.
따라서 대상이 일본판 Yahoo! Finance인 경우, 공식적으로 안내된 다운로드 기능 등을 우선해야 합니다. 해외판 Yahoo Finance, yfinance, 제3자 템플릿을 이용할 경우에도, 각각의 최신 이용 조건과 데이터 권리를 확인해야 합니다.
운용 전에는 최소한 다음 항목들을 체크합니다.
- 취득원이 자동 수집을 허용하는지
- robots.txt만으로 가능 여부를 판단하지 않았는지
- 개인 이용인지 업무/상업적 이용인지
- 취득 데이터를 사외에 공유/재배포할 것인지
- 필요 이상으로 짧은 간격으로 접근하지 않았는지
- 데이터 지연과 취득 시각을 기록했는지
- 주식 분할이나 배당 조정의 처리가 통일되었는지
- 결측치나 이상치를 감지할 수 있는지
- 정규 데이터와 주기적으로 대조하는지
검색 결과에서 'Yahoo Finance API'라고 불리는 것에는 비공식 라이브러리나 제3자 API가 포함됩니다. Python의 `yfinance`는 야후 공식 API는 아니지만, `7203.T` 같은 티커로 일본 주식을 취득할 수 있는 예시가 있습니다. 공식성이나 업무 이용을 중시한다면, J-Quants나 증권사 API도 비교해 보세요.
`.T`는 Yahoo Finance 상에서 도쿄증권거래소의 종목을 구분하기 위해 사용되는 접미사입니다. 숫자만으로는 다른 시장의 심볼로 해석될 가능성이 있으므로, 종목명, 시장, 통화까지 확인해야 합니다.
Excel의 주가 데이터 형식인 `STOCKHISTORY`, Power Query, VBA, 외부 API 등으로 자동 취득할 수 있습니다. 다만, 일본 주식 대응 여부, 이용 가능한 Excel 버전, 업데이트 빈도가 방법마다 다릅니다. 복수 종목을 지속적으로 취득하는 경우에는 API나 노코드 툴과의 연계도 고려해야 합니다.
전용 템플릿을 이용할 경우, 기본적인 조작에 프로그래밍은 필요 없습니다. 종목 코드 등의 파라미터를 입력하고 로컬 수집 또는 클라우드 수집을 선택한 후, 취득 결과를 Excel이나 CSV로 출력합니다.
복수 입력을 지원하는 템플릿이라면, 종목 코드를 모아서 지정할 수 있습니다. 템플릿마다 입력 형식과 상한이 다르므로, 실행 전에 사양을 확인하고 먼저 소수 종목으로 테스트해야 합니다.
AI 지원 기능이나 MCP를 사용하면 태스크 조정, 필드 정리, 취득 후 비교 및 리포트 작성 등을 효율화할 수 있습니다. 다만, 데이터의 정확성, 대상 사이트의 이용 조건, 실행 실패에 대한 모니터링까지 자동으로 보장되는 것은 아닙니다. 중요한 수치는 원본 데이터와 대조해야 합니다.
Yahoo! Finance를 포함한 주가 정보 수집 방법은 필요한 종목 수, 업데이트 빈도, 데이터 신선도, 프로그래밍 경험에 따라 선택해야 합니다.
- 소수 종목을 가끔 확인할 경우: 수작업이나 Excel
- Python으로 분석 및 시제품 제작을 할 경우: yfinance
- 일본 주식의 공식 데이터를 중시하는 경우: J-Quants나 증권사 API
- 복수 종목을 코드 없이 수집/출력할 경우: Octoparse의 전용 템플릿
- 수집 후 필드 수정이나 AI 분석까지 연결할 경우: AI Field Fixer나 MCP
처음부터 대량 수집을 시작하기보다는, 2~3개 종목으로 가져온 결과를 검증하고 데이터의 최신성 및 활용 조건을 확인한 후에 대상 범위를 늘리는 것이 안전합니다. 주가 데이터는 단순히 '획득되었는지'뿐만 아니라, '언제 시점의 값인지', '지속적으로 동일한 조건으로 획득할 수 있는지', 그리고 '해당 용도로 이용 가능한지'까지 확인해야 비로소 분석에 사용할 수 있는 데이터가 됩니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Qiita AI의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기