sdk115 / dart-fss

한국 금융감독원에서 운영하는 다트(Dart) 시스템 크롤링을 위한 라이브러리

Home Page:https://github.com/josw123/dart-fss

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Dart-Fss

PyPI PyPI - Python Version Build Status Coverage Codacy Badge

한국 금융감독원에서 운영하는 Dart 시스템 크롤링을 위한 라이브러리

Features

  • KIND를 이용한 기업정보 검색
  • DART의 오픈 API를 이용한 전자공시 조회
  • DART의 전자공시 정보를 이용한 재무제표 추출

Installation

pip install dart-fss

Dependencies

Usage

Dart API Key 설정

import dart_fss as dart

api_key='xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' 
dart.dart_set_api_key(api_key=api_key)

상장된 회사리스트

import dart_fss as dart

# Market Type
# A: 모든 시장
# Y: 유가증권시장
# K: 코스닥
# N: 코넥스
# E: 기타

crp_list = dart.get_crp_list() # default 모든 시장
crp_list_stock = dart.get_crp_list(market='y') # 유가증권시장

# 이름으로 검색
samsung_electronics = crp_list.find_by_name('삼성전자')[0] # 리스트 반환

# 코드로 검색
sk_hynix = crp_list_stock.find_by_crp_cd('000660') # 특정 종목 반환

# 관련 물품으로 검색
stock_brokers = crp_list.find_by_product('증권') # 리스트 반환

Dart 전자공시 조회

import dart_fss as dart

crp_list = dart.get_crp_list() # default 모든 시장
samsung_electronics = crp_list.find_by_name('삼성전자')[0] # 리스트 반환

# 오늘 공시된 전자공시 조회
today = dart.search_report() 

# 특정기간 검색 (3개월 이내)
reports = dart.search_report(start_dt='20190101',end_dt='20190201')
reports.page_no = 2     # 2번째 페이지로 이동
reports.next_page()     # 다음 페이지로 이동
reports.prev_page()     # 이전 페이지로 이동

# 특정회사 검색 
reports = dart.search_report(crp_cd='000660', start_dt='20190101') # 하이닉스
# 또는
reports = samsung_electronics.search_report(start_dt='20190101')

# 검색결과 필터링
reports = reports.filter(bsn_tp='a001') # 연말보고서만 출력

annual_report = reports[0] # 2019년 사업보고서
annual_report.pages # 2019년 사업보고서 Page List 출력

# 3번째 페이지 조회
page = annual_report[3]

# 3번째 페이지의 HTML 
html = page.html

annual_report.to_file(r'C:\annual_report_2019') # C:\annual_report_2019에 사업보고서 저장(html 파일 형태로 파일별로 저장)

# "연결재무제표" 포함, "주석" 미포함 페이지만 로딩
annual_report.load_page(includes="연결재무제표", excludes="주석")


# 전지공시 조회 (캐싱기능 사용)
# 최대 캐싱 시간(분, 기본설정 30분)
dart.search.MAX_CACHED_MINUTES = 10 
# 최대 캐싱 검새결과 수(기본 4)
dart.search.MAX_CACHED_SEARCH_RESULTS = 2 

# 전지공시 조회 (캐싱기능 사용)
cached_reports = dart.search.search_report_with_cache(start_dt='20190101', end_dt='20190201')

제무제표 검색

  • 제무제표는 pandas의 DataFrame 형태로 반환 됩니다.
  • concept_id는 금감원-XBRL 자료실의 계정과목을 참고하시기 바랍니다.
  • 재무제표 검색은 search_report_with_cache를 사용하여 조회하기 때문에 메모리 부족시 MAX_CACHED_SEARCH_RESULTS 값을 조절하기 바랍니다.
import dart_fss as dart

crp_list = dart.get_crp_list() # 유가증권시장
samsung_electronics = crp_list.find_by_name('삼성전자')[0]

# 2012년부터 연간보고서에 포함된 연결 재무상태표 검색
fs_annual = samsung_electronics.get_financial_statement(start_dt='20120101')

# 2012년부터 연간보고서에 포함된 연결 재무상태표 검색(반기 포함)
fs_half = samsung_electronics.get_financial_statement(start_dt='20120101', report_tp='half')

# 2012년부터 연간보고서에 포함된 연결재무상태표 검색(반기 및 분기 포함)
fs_quarter = samsung_electronics.get_financial_statement(start_dt='20120101', report_tp='quarter')

# 2012년부터 연결 손익계산서 검색(회사에 따라 제공되지 않는경우도 있음)
fs_annual = samsung_electronics.get_financial_statement(start_dt='20120101', fs_tp='is')

# 2012년부터 연결 포괄손익계산서 검색(회사에 따라 제공되지 않는경우도 있음)
ci_annual = samsung_electronics.get_financial_statement(start_dt='20120101', fs_tp='ci')

# 2012년부터 연결 현금흐름표 검색
cf_annual = samsung_electronics.get_financial_statement(start_dt='20120101', fs_tp='cf')

# 표시언어 영어(기본 'ko')
fs_annual = samsung_electronics.get_financial_statement(start_dt='20120101', lang='en')

# Abstract 표시(기본 False)
fs_annual = samsung_electronics.get_financial_statement(start_dt='20120101', show_abstract=True)

# Class 표시 안함(기본 True)
fs_annual = samsung_electronics.get_financial_statement(start_dt='20120101', show_class=False)

# 표시할 Class 깊이(기본 10)
fs_annual = samsung_electronics.get_financial_statement(start_dt='20120101', show_depth=3)

# concept 표시 안함(기본 True)
fs_annual = samsung_electronics.get_financial_statement(start_dt='20120101', show_concept=False)

# 개별기업 연결 재무상태표 검색(기본 False)
fs_annual = samsung_electronics.get_financial_statement(start_dt='20120101', separate=True)

# 1000단위 구분자 표시여부(기본 True)
fs_annual = samsung_electronics.get_financial_statement(start_dt='20120101', separator=False)

주의사항

  • Dart-Fss 라이브러리는 오픈 API의 응답 방식 중 JSON 방식을 사용 중
  • 현재 DART 오픈 API의 응답 방식이 JSON인 경우 오류 발생시 오류 메시지를 보내지 않음 (응답방식이 xml인 경우 올바르게 작동함)

XML 결과

<?xml version="1.0" encoding="utf-8"?>
<result>
    <err_code>010</err_code>
    <err_msg>미등록 인증키</err_msg>
    <page_no>1</page_no>
    <page_set>10</page_set>
    <total_count>0</total_count>
    <total_page>0</total_page>
</result>

JSON 결과

{"err_code":"000","err_msg":"정상","page_no":1,"page_set":10,"total_count":0,"total_page":0,"list":[]}

About

한국 금융감독원에서 운영하는 다트(Dart) 시스템 크롤링을 위한 라이브러리

https://github.com/josw123/dart-fss

License:MIT License


Languages

Language:Python 100.0%