전자공시(Open DART) 재무제표 크롤링 04:: 단일회사 주요계정
앞서 "단일회사 전체 재무제표"를 크롤링 하면서 전자공시 사이트를 왔다갔다 하다보니 "단일회사 주요계정"을 조회하는 것도 주요지표로 상장기업을 선별하는데 유용할 것 같은 생각이 들었습니다. 그래서 이번에도 단일회사의 주요계정을 DART API로 요청하여 받아온 데이터를 그대로 줄리아 데이터프레임으로 반환하는 함수를 만들어보겠습니다.
해당 API에 대한 설명은 전자공시 OPENDART 시스템 > 개발가이드 > 상장기업 재무정보 > 단일회사 주요계정 개발가이드를 살펴보시면 됩니다.
일단 요청시 필수적인 인자를 살펴보면 다음과 같습니다.
키 | 명칭 | 타입 | 값 설명 |
crtfc_key | API 인증키 | STRING(40) | 발급받은 인증키(40자리) |
corp_code | 고유번호 | STRING(8) | 공시대상회사의 고유번호(8자리) ※ 개발가이드 > 공시정보 > 고유번호 API조회 가능 |
bsns_year | 사업연도 | STRING(4) | 사업연도(4자리) ※ 2015년 이후 부터 정보제공 |
reprt_code | 보고서 코드 | STRING(5) | 1분기보고서 : 11013 반기보고서 : 11012 3분기보고서 : 11014 사업보고서 : 11011 |
API인증키와 고유번호에 대해서는 앞선 포스팅에서 설명하였습니다. 나머지 사업연도와 보고서코드는 본인이 원하는 값을 넣으면 되는 것이니, 단순해 보입니다.
반환되는 키와 값들을 살펴보니 이것도 많네요.
키 | 명칭 | 출력설명 |
rcept_no | 접수번호 | 접수번호(14자리) ※ 공시뷰어 연결에 이용예시 - PC용 : http://dart.fss.or.kr/dsaf001/main.do?rcpNo=접수번호 - 모바일용 : http://m.dart.fss.or.kr/html_mdart/MD1007.html?rcpNo=접수번호 |
bsns_year | 사업 연도 | 2019 |
stock_code | 종목 코드 | 상장회사의 종목코드(6자리) |
reprt_code | 보고서 코드 | 1분기보고서 : 11013 반기보고서 : 11012 3분기보고서 : 11014 사업보고서 : 11011 |
account_nm | 계정명 | ex) 자본총계 |
fs_div | 개별/연결구분 | CFS:연결재무제표, OFS:재무제표 |
fs_nm | 개별/연결명 | ex) 연결재무제표 또는 재무제표 출력 |
sj_div | 재무제표구분 | BS:재무상태표, IS:손익계산서 |
sj_nm | 재무제표명 | ex) 재무상태표 또는 손익계산서 출력 |
thstrm_nm | 당기명 | ex) 제 13 기 3분기말 |
thstrm_dt | 당기일자 | ex) 2018.09.30 현재 |
thstrm_amount | 당기금액 | 9,999,999,999 |
thstrm_add_amount | 당기누적금액 | 9,999,999,999 |
frmtrm_nm | 전기명 | ex) 제 12 기말 |
frmtrm_dt | 전기일자 | ex) 2017.01.01 ~ 2017.12.31 |
frmtrm_amount | 전기금액 | 9,999,999,999 |
frmtrm_add_amount | 전기누적금액 | 9,999,999,999 |
bfefrmtrm_nm | 전전기명 | ex) 제 11 기말(※ 사업보고서의 경우에만 출력) |
bfefrmtrm_dt | 전전기일자 | ex) 2016.12.31 현재(※ 사업보고서의 경우에만 출력) |
bfefrmtrm_amount | 전전기금액 | 9,999,999,999(※ 사업보고서의 경우에만 출력) |
ord | 계정과목 정렬순서 | 계정과목 정렬순서 |
키(key)값을 수차례 보다보니 이제 눈에 익는 것 같긴 하지만 데이터프레임에 넣을 때에는 한글명칭으로 넣을 생각입니다. 앞서 "전자공시(Open DART) 재무제표 크롤링 03:: 단일회사 전체 재무제표"를 하면서 만든 convertFnltt(url, items, item_names) 함수를 여기에서도 이용할 생각입니다. 또한 앞서 동일하게 JSON으로 받아오게끔 하겠습니다.
함수명은 "get_fnlttSinglAcnt"로 get 뒤에 약어들은 OpenDART에서 쓰는 걸 그대로 이용하고 있습니다. 아무튼 만들어진 함수는 다음과 같습니다. (마지막 convertFnltt 함수는 앞선 글에서 확인됩니다.)
using HTTP, JSON, DataFrames
function get_fnlttSinglAcnt(crtfc_key::String, corp_code::String,
bsns_year::String, reprt_code::String)
items = ["rcept_no", "bsns_year", "stock_code", "reprt_code", "account_nm",
"fs_div", "fs_nm","sj_div", "sj_nm", "thstrm_nm", "thstrm_dt",
"thstrm_amount","thstrm_add_amount", "frmtrm_nm", "frmtrm_dt",
"frmtrm_amount","frmtrm_add_amount", "bfefrmtrm_nm", "bfefrmtrm_dt",
"bfefrmtrm_amount","ord"]
item_names = ["접수번호", "사업연도", "종목코드", "보고서코드", "계정명",
"개별연결구분","개별연결명", "재무제표구분", "재무제표명", "당기명",
"당기일자","당기금액", "당기누적금액", "전기명", "전기일자",
"전기금액","전기누적금액", "전전기명", "전전기일자", "전전기금액",
"계정과목정렬순서"]
url = "https://opendart.fss.or.kr/api/fnlttSinglAcnt.json"*
"?crtfc_key=$(crtfc_key)"*"&corp_code=$(corp_code)"*
"&bsns_year=$(bsns_year)"*"&reprt_code=$(reprt_code)"
return convertFnltt(url,items,item_names)
end
이번에도 컬럼이 21개인지라 확인이 어려우니, 엑셀로 저장해서 보겠습니다. 요즘 코로나-19 진단키트로 아주 열광적이었던 씨젠의 2019년 사업보고서의 주요계정을 조회한 결과입니다.
julia> using XLSX
julia> df = get_fnlttSinglAcnt("OPENDART API 인증키","00788773","2019","11011")
julia> XLSX.writetable("report.xlsx", SHEET1=( collect(DataFrames.eachcol(df)), DataFrames.names(df) ))
주요계정이라 그런지 데이터가 길지 않아서 좋네요. 상장기업들의 주요계정만 모아서 주요지표로만 기업을 걸러보는 것도 재미있겠네요.
'금융 & 부동산 > 주식' 카테고리의 다른 글
전자공시(Open DART) 재무제표 크롤링 : Python (6) | 2020.05.03 |
---|---|
전자공시(Open DART) 재무제표 크롤링 05:: 다중회사 주요계정 (Julia) (0) | 2020.04.25 |
전자공시(Open DART) 재무제표 크롤링 03:: 단일회사 전체 재무제표 (Julia) (0) | 2020.04.24 |
전자공시(Open DART) 재무제표 크롤링 02:: 기업 고유번호 (Julia) (0) | 2020.04.24 |
전자공시(Open DART) 재무제표 크롤링 01:: 인증키 받기 (0) | 2020.04.24 |