[주식 데이터 자동 기록 기초] EP04. 오픈다트(OpenDART) API 연동 및 실시간 공시 데이터 추출 자동화 편

목차

 

다트에서 공시 알림을 받는 시스템을 테스트 목적으로 이전에도 글을 남겨둔 적이 있다. 당시 글은 다트 내 컴퓨터를 계속 켜 둘 수 없어 중간에 깃허브 액션을 거쳐 텔레그램으로 전송하는 시스템을 만드는 것을 기초로 하고 있다. 그러니까 아래와 같은 루트가 되는 것이다.

다트 공시 👉 깃허브 액션 👉 텔레그램

위 시스템과 관련된 글은 아래 링크로 남겨두었다.

이번 글도 다트 공시를 자동 전송받는 목적은 같으나 이전 글과의 차이점은 특정 성격의 공시를 따로 모아 정렬해서 데이터화하여 본다거나 특정 종목의 원하는 기간 내의 공시를 따로 모아 볼 수 있는 좀 더 발전된 용도이다. 그러니까 단순함을 넘어 내가 원하는 조합을 해서 데이터를 쌓을 수 있다는 말이다.

이런 구조를 더 첨가하려면 '오픈다트리더(OpenDartReader)를 설치하면 된다. 먼저 시작하기 전 이전 글과 중복된 부분은 버튼으로 링크를 걸어놓았다. 아래 '준비'의 필요 사항들이 갖추어져 있는지 확인해보자.

1. 준비

OpenDART API Key

공시를 볼 수 있는 다트에서 API 인증키를 발급받아야 다트에서 원하는 공시를 추출할 수 있다. 그래서 이전 시리즈를 보지 않았다면 이전 다트 API 인증키를 발급받는 방법에 대한 글을 남겨놓았으므로 아래 링크를 통해 먼저 다트 API 인증키를 발급받아 준비를 해 놓아야 한다.

VS Code 프로그램

본격적인 스크립트 작성 및 24시간 무인 구동 체계를 테스트하기 위해 VS Code(Visual Studio Code) 편집기를 실행한다. 만약 아직 프로그램이 설치되어 있지 않거나 환경 세팅이 낯설다면 지난 2편에서 정리한 설치 과정을 먼저 참고하면 된다.

기존에 세팅해 두었던 프로젝트 작업 디렉토리를 그대로 유기적으로 연결해 주면 끊김 없이 전선을 이어갈 수 있다.

2. OpenDartReader 라이브러리 수동 설치

현재 VS Code 상태

오픈다트리더를 설치하기 위해서 VS Code 프로그램의 터미널에서 명령어를 입력해야 하는 과정이다. 그런데 쌩초보에다 이전 시리즈에서 연결해 실행을 해봐야 해서 지금 현재 나의 VS Code 프로그램이 어떤 상태인지 남겨놓으려고 한다.

왼쪽 EXPLORER : BLOG_BOT가 열려있는 상태

중앙 : 'notion_stock.py' 탭이 선택되어져 있는 상태

터미널 : 아래 터미널 메뉴가 선택되어져 있어야 한다.

(1) 터미널에서 'blog_bot>' 커서 뒤에 아래 코드를 복사해 붙여넣기 한 후 엔터를 누른다.

pip install opendartreader pandas

⚠️ 잠깐! 위 코드를 붙여넣기 했는데 아래와 같은 빨간색 에러 메시지가 나타나면 실패한 것이다.

pip : 'pip' 용어가 cmdlet, 함수, 스크립트 파일 또는 실행할 수 있는 프로그램 이름으로 인식되지 않습니다. 이름이 정확한지 확인하고 경로가 포함된 경우 경로가 올바른지 검증한 다음 다시 시도하십시오.

위의 경우처럼 실패했다면 아래 코드를 복사해 붙여넣기를 다시 해보자. 필자의 경우도 아래 코드를 붙여넣기 해서 성공했다.

python -m pip install opendartreader pandas

(2) 위 코드 중 성공이라면 수많은 텍스트가 내려오는데, 맨 마지막 줄 근처에 'Successfully installed opendartreader-0.3.2'라는 문구가 보이거나 이미 설치된 상태라 'Requirement already satisfied'의 메시지가 나온다면 성공한 것이다.

Successfully installed (또는 Requirement already satisfied) 👉 성공!

3. 새로운 파이썬 파일 생성 및 공시 추출 코드 주입

라이브러리 설치까지 완벽하게 끝났으니 이제 직접 공시 데이터를 가져올 파이썬 스크립트를 짤 차례이다. 여기서 주의할 점은, 이전 시리즈에서 다루었던 노션 주가 전송 코드 등 기존 파일에 그대로 덮어쓰면 코드가 꼬여서 작동하지 않는다는 것이다.

따라서 안전하게 새로운 파일을 만들어서 깨끗한 상태로 시작해 주어야 한다.

※ 파일의 이름은 본인이 잘 알아볼 수 있게 짓되 확장자는 꼭 '.py'로 끝나야 한다.

안전한 새 파일 세팅 순서

1. VS Code 왼쪽 탐색기(EXPLORER) 빈 공간을 마우스 우클릭한 뒤 'New File...'을 누른다.

2. 기존 `notion_stock.py`와 구분하기 위해 새 파일 이름을 opendart_stock.py로 만들고 엔터를 친다.

3. 새롭게 열린 빈 화면에 아래의 오픈다트 공시 추출 코드를 통째로 복사해서 붙여넣어 준다.

import OpenDartReader
import pandas as pd
from datetime import datetime

# 1. OpenDART API 인증키 입력 (★나의 진짜 다트 키를 넣으세요)
API_KEY = "발급받은_오픈다트_API_인증키_입력"
dart = OpenDartReader(API_KEY)

# 2. 조회 대상 설정 (예시: 한화오션 종목코드 및 현재 날짜 기준)
company_code = "042660"
current_date = datetime.today().strftime('%Y-%m-%d')

print(f"📡 {current_date} 기준 실시간 공시 레이더 가동...")

try:
    # 3. 오픈다트에서 최근 공시 데이터 목록 긁어오기
    df = dart.list(company_code, start='2026-01-01')

    if df is not None and not df.empty:
        selected_columns = ['rcept_dt', 'corp_name', 'report_nm', 'flr_nm']
        result_df = df[selected_columns].sort_values(by='rcept_dt', ascending=False)

        # 터미널 창에 가시적으로 데이터 출력
        print(result_df.head(10))
    else:
        print("❌ 해당 기간 내 검측된 새로운 공시 데이터가 없습니다.")

except Exception as e:
    print(f"🚨 공시 데이터 수신 중 예외 발생: {e}")

💡 중요 세팅 마무리

코드의 API_KEY 부분에 있는 "발급받은_오픈다트_API_인증키_입력" 자리에 나의 진짜 다트 API Key를 대입하고, 반드시 Ctrl + S를 눌러 저장을 완료해 주자.

4. 파이썬 파일 격발 및 실시간 공시 데이터 최종 확인

모든 전열이 정비되었다. 이제 하단의 검은색 터미널 창으로 이동하여, 깜빡이는 커서 뒤에 아래 파일 실행 명령어를 입력하고 힘차게 엔터(Enter)를 타격한다.

python opendart_stock.py

정상적으로 격발되었다면 터미널 창에 붉은색 에러 메시지 없이 지정한 종목(예: 한화오션)의 최근 실시간 공시 목록들이 접수일자, 보고서명과 함께 테이블 형태로 깔끔하게 정렬되어 분출되는 것을 확인할 수 있다.

이렇게 내 컴퓨터에서 오픈다트 API를 통해 직접 데이터를 호출하고 조립하는 4편의 전선이 성공적으로 마무리되었다. 성공적으로 주식 공시 데이터가 분출되는 것을 확인했다면 이제 여기서 수집한 데이터를 다른 자동화 구조와 연결해 활용할 수 있다.

다음 단계에서는 지금까지 연결한 노션과 데이터를 활용해 구글 블로그(Blogger) 자동 발행 구조를 직접 테스트해볼 예정이다. 이후에는 GitHub Actions까지 연결해 컴퓨터를 계속 켜두지 않아도 실행되는 구조로 확장해볼 생각이다.

함께 보면 좋은 글
주식 데이터 자동 기록 기초 시리즈
EP01 · Blogger API [주식 데이터 자동 기록 기초] EP01. 구글 블로그(Blogger) API 설정 및 연동 환경 구축 → EP02 · Yahoo Finance · Telegram [주식 데이터 자동 기록 기초] EP02. 야후 파이낸스 주가 데이터 및 텔레그램 알림 연동 → EP03 · Notion API [주식 데이터 자동 기록 기초] EP03. 노션 API 연동 및 데이터베이스 자동 수신 환경 구축 → 📍 EP04 · 현재 글 [주식 데이터 자동 기록 기초] EP04. 오픈다트(OpenDART) API 연동 및 실시간 공시 데이터 추출 자동화 편
🔒 EP05 · 예정 노션 데이터 활용 → 구글 블로그 자동 발행
🔒 EP06 · 예정 GitHub Actions → 24시간 무인 자동화 배포

 

댓글

이 블로그의 인기 게시물

학점은행제 아동학 학사 학위 신청 방법, 보육교사 2급 자격증 취득 순서 정리

블로그 작성 시간을 줄이자. 크롬 다크리더 사용 글자색이 회색으로 보이는 방법 해결

주식 데이터 자동 기록 기초 EP01. 구글 클라우드 콘솔 설정 및 블로거 API 연동