#!/usr/bin/env python # coding: utf-8 # Open In Colab # # OpenDartReader - 비상장 기업 데이터 조회와 활용 # # # # ***2019-2022 [FinanceData.KR]()*** # ## 요약 # # ```python # import OpenDartReader # # api_key = '961aebb762ef44e8f93a36218897eb**********' # dart = OpenDartReader(api_key) # # # [비바리퍼블리카] (송금서비스 토스로 유명한), 공시(감사보고서) 목록 # df = dart.list('비바리퍼블리카', start='1900') # # # [빅히트엔터테인먼트] (BTS로 유명한), 공시(감사보고서) 목록 # df = dart.list('빅히트엔터테인먼트', start='1900') # df = dart.list('01204056', start='1900') # # # [쿠팡] "연결감사보고서 (2019.12)" 20200414000766 (삼일회계법인) # # http://dart.fss.or.kr/dsaf001/main.do?rcpNo=20200414000766 # html_text = dart.document('20200414000766') # df_list = pd.read_html(html_text) # df_list[15] # 연결포괄손익계산서 # ``` # # # # ## OpenDartReader 설치와 초기화 # In[1]: get_ipython().system('pip install -q OpenDartReader') # In[2]: import OpenDartReader # 발급받은 API키를 사용하세요 api_key = 'c19d19f2fae8006979b6e3670c8e8afe9d7d44cf' dart = OpenDartReader(api_key) # ## 비상장 회사의 공시보고서 목록 # In[9]: df = dart.list('비바리퍼블리카', start='1900') # 토스 df # In[4]: # 보고서 링크 for ix, row in df.iterrows(): rcp_no = row['rcept_no'] print(f'http://dart.fss.or.kr/dsaf001/main.do?rcpNo={rcp_no}') # ## 이름으로 확인 하기 # 회사 이름으로 식별이 고유하게 식별이 가능한지 확인해야 하는 것을 추천합니다. # In[19]: comps = dart.company_by_name('하이브') len(comps) # In[20]: comps # ## 공시목록 가져오기 # 조회를 해보고 정식명칭의 전체 회사명을 사용하십시오. `corp_code`를 쓰는 것이 가장 확실합니다. # In[23]: bighit = dart.list('하이브', start='1900') bighit # In[18]: bighit = dart.list('01204056', start='1900') bighit # ## 공시 본문가져오기 # "연결감사보고서 (2019.12)"의 접수번호(rcept_no) '20200331000038'로 공시보고서 문서 전체를 얻을 수 있습니다. (형식은 XHTML 입니다) # # http://dart.fss.or.kr/dsaf001/main.do?rcpNo=20200331000038 # # # # In[24]: html_text = dart.document('20200331000038') html_text[:1000] # 앞부분 # ## 재무데이터를 데이터프레임으로 읽어오기 # pandas의 read_html()로 페이지에 포함된 표를 손쉽게 DataFrame으로 읽을 수 있습니다. # In[25]: df_list = pd.read_html(html_text) # In[26]: len(df_list) # 페이지안에 총 142개의 테이블(table)이 있습니다. # # 몇 번째 표가 `연결재무상태표`인지는 인덱스번호를 넣어가며 찾아야 합니다. 여기서는 15번째(인덱스로는 14)가 연결재무상태표 입니다. # In[27]: # 연결재무상태표 df = df_list[14] remove_text = "&cr;(감사받지 아니한 재무제표)" df.columns = [col.replace(remove_text, '') for col in df.columns] df # In[28]: # 연결포괄손익계산서 df = df_list[18] remove_text = "&cr;(감사받지 아니한 재무제표)" df.columns = [col.replace(remove_text, '') for col in df.columns] df # In[29]: # 연결현금흐름표 df = df_list[24] remove_text = "&cr;(감사받지 아니한 재무제표)" df.columns = [col.replace(remove_text, '') for col in df.columns] df # ## 쿠팡 손익계산서 # In[30]: coupang = dart.list('쿠팡', start='1900') coupang # In[31]: # http://dart.fss.or.kr/dsaf001/main.do?rcpNo=20200414000766 html_text = dart.document('20200414000766') df_list = pd.read_html(html_text) len(df_list) # In[32]: # 연결포괄손익계산서 df_list[15] # 당기(2019년)에 영업손실 -7,205 억원을 기록했습니다. 전기(2018년)에 -1조1279억원에 비하면 많은 개선이 이루어졌습니다. # # ***2019-2022 [FinanceData.KR]()***