반응형

dart에서 내 블로그 글을 봤는지(그럴리가) "단일회사 전체 재무제표" API를 추가해 주셨다.

근데 왜 글 제목은 "단일회사 주요계정"이냐 함은

"단일회사 전체 재무제표"를 열어보니 딱히 내가 원하는 데이터가 아님..

통계로 사용하기에는 부적절하다고나 할까?

그래서 전체재무제표는 투자하기 전에 읽어보는 용도로 나중에 만들기로 하고

단일회사 주요계정을 만들어 보자.

 

했다(?)

# -*- coding: utf-8 -*- 

from urllib.request import urlopen 
import xml.etree.ElementTree as elemTree 
import pickle

API_key = "xxxxxxxxxx" 

corp_code = "00356370"  
bsns_year = "2018" 
reprt_code = "11013"  
filename = "./OPENDART_data/fnlttSinglAcnt_" +corp_code+"_"+bsns_year+"_"+reprt_code +".xml"



url = "https://opendart.fss.or.kr/api/fnlttSinglAcnt.xml?crtfc_key=" + API_key +"&corp_code=" + corp_code+"&bsns_year=" + bsns_year +"&reprt_code=" + reprt_code
while True: #에러 날 경우 재시도.
    try:
        resp = urlopen(url)
    except Exception as e:
        print(str(e))
        print("재시도합니다")
        continue
    break
        

tree = elemTree.fromstring(resp.read().decode()) 
if tree.findtext("status") == "020":
    print("일일 요청제한을 초과하여 종료합니다.")
else :    
    elemTree.ElementTree(tree).write(filename)



 

xml로 받아와서 xml로 저장하는 코드이다. OPENDART_data 폴더는 아마 미리 만들어둬야 오류가 안날 것 같다.

재시도 하는 부분을 만든이유는 한번씩 연결이 불안정한지 120초 시간오버로 에러가 발생하는데

그럴때를 대비해 만들었다.

다른 에러 다른 해결책이 발생하면 알아서 추가하도록 하자.

 

용량이 적은 json이 아니라 xml로 한 이유는 엑셀로 열면 바로 열린다는 단순한 이유때문이다.

개편함.

 

OPENDART의 경우 이전 글에서 봤던 zip파일로 주거나 xml로 주기 때문에

사실 이전 글과 이번 글을 이용하면 모든 자료를 받을 수 있다.

그래서 다른 API 코드 설명은 따로 만들 계획은 없고

OPENDART 테스트 기간이 풀리면 10년, 20년재무재표를 가져오는 프로그램을 만들어 보겠다.

4월 1일이 기다려지는구만

응? 근데 4월 1일이면 만우절 아닌가? (강력한 복선)

반응형

+ Recent posts