josw123 / dart-fss

한국 금융감독원에서 운영하는 다트(Dart) 시스템 크롤링을 위한 라이브러리
https://github.com/josw123/dart-fss
MIT License
319 stars 111 forks source link

23년 사업보고서 추출이 안되는 현상 #162

Closed tejung2 closed 4 months ago

tejung2 commented 4 months ago

안녕하세요 josw123님 !!

작성하신 코드 덕에 자료 정리가 더 편리해졌습니다.

다름이 아니라, 23년 사업보고서가 추출이 되지 않는 문제가 발생했습니다.(코딩에 지식이 없다시피하여, 문의 내용이 명확하지 않고 중구난방인 점은 정말 죄송합니다.)

Jupyter 호출코드는 아래와 같습니다. (23년 3분기 보고서를 내려받을 시점까지는 정상적으로 작동 했으니, 4분기 공시부터 XBRL 주석 확대로 인해 발생한 문제일 것 같습니다.)

extract.py, corp_list 등 코드 내용을 업데이트 하였음에도 불구하고 동일한 문제가 생겨 문의드립니다.


import dart_fss as dart

별도재무제표 추출.

report_tp : annual(사업보고서), quarter(분기)

separate : True(별도), False(연결)

api_key = '사용자 API KEY'

dart.set_api_key(api_key=api_key)

corp_list = dart.get_corp_list()

con = corp_list.find_by_corp_name('삼성전자', exactly=True)

corp_name은 회사명만 입력.

corp = con[0]

corp_code = corp.corp_code

fs_tp : 'bs' = 재무상태표, 'is' = 손익계산서, 'cis' = 포괄손익계산서, 'cf' = 현금흐름표, 'notes' = 주석(잠정으로, 실제 XBRL 주석 도입이후 확인 필요.)

fs = dart.fs.extract(corp_code, bgn_de='20220101', fs_tp=('bs', 'is', 'cis', 'cf'), separate=True, report_tp='Quarter', lang='ko', separator=True, dataset='xbrl', cumulative=False, progressbar=True, skip_error=True, last_report_only=True)

재무제표 검색 결과를 엑셀파일로 저장 ( 기본저장위치 : 실행폴더/fsdata)

fs.save()


ValueError에 따라 나오는 메시지는 아래와 같습니다.


ValueError Traceback (most recent call last) ~\AppData\Local\Temp\ipykernel_38632\2324624514.py in 23 #fs_tp : 'bs' = 재무상태표, 'is' = 손익계산서, 'cis' = 포괄손익계산서, 'cf' = 현금흐름표, 'notes' = 주석(잠정으로, 실제 XBRL 주석 도입이후 확인 필요.) 24 ---> 25 fs = dart.fs.extract(corp_code, bgn_de='20220101', fs_tp=('bs', 'is', 'cis', 'cf'), separate=True, report_tp='Quarter', lang='ko', separator=True, dataset='xbrl', cumulative=False, progressbar=True, skip_error=True, last_report_only=True) 26 27 # 재무제표 검색 결과를 엑셀파일로 저장 ( 기본저장위치 : 실행폴더/fsdata)

~\Anaconda3\lib\site-packages\dart_fss\fs\extract.py in extract(corp_code, bgn_de, end_de, fs_tp, separate, report_tp, lang, separator, dataset, cumulative, progressbar, skip_error, last_report_only) 1520 'end_de': end_de, 1521 'separate': separate, -> 1522 'report_tp': report_tp, 1523 'lang': lang, 1524 'separator': separator

~\Anaconda3\lib\site-packages\dart_fss\fs\extract.py in extract(corp_code, bgn_de, end_de, fs_tp, separate, report_tp, lang, separator, dataset, cumulative, progressbar, skip_error, last_report_only) 1444 dart.utils.spinner.spinner_enable = False 1445 statements = None -> 1446 label_df = None 1447 report = None 1448

~\Anaconda3\lib\site-packages\dart_fss\fs\extract.py in check_report_tp(req_tp, tp) 1426 last_reprt_at = 'Y' 1427 else: -> 1428 last_reprt_at = 'N' 1429 1430 def check_report_tp(req_tp, tp):

ValueError: ('tuple.index(x): x not in tuple', 'Unexpected Error')


해당 문제로 이슈가 접수된 사항은 없는 것으로 파악했으며, 저만 겪고 있는 문제가 아니라면 josw123님께서도 이미 수정작업 진행 중이실거라 생각이 됩니다만,

상기 내용에 대해 문의드립니다.

josw123 commented 4 months ago

안녕하세요. 올려주신 문제는 report_tp가 'Quarter'로 지정되어 발생하는 문제입니다. 'quarter'로 변경하시면 별문제 없이 동작하는 것을 확인하였습니다.

대소문자 구분에 의해 발생하는 문제이며, 대소문자 구분 없이 처리가능하도록 다음버전에서는 수정하도록 하겠습니다.

tejung2 commented 4 months ago

감사합니다!! 정상적으로 잘 작동되네요 ㅎㅎ