josw123 / dart-fss

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

23.3분기 이후 재무정보 크롤링 불가 #151

Closed tejung2 closed 8 months ago

tejung2 commented 8 months ago

안녕하세요! 먼저 올려주신 자료들 정말 잘 사용하고 있습니다!

23년 2분기 공시까지는 재무정보를 잘 끌고 왔었는데 3분기 공시부터는 데이터를 끌고 오지 못합니다. 이전에 비슷한 이슈로 2주전 올려주신 수정 코드들 다 업데이트 하고 구동해봐도 마찬가지로 문제가 됩니다.

사용환경은 아래와 같습니다.

OS : Windows 10 Anaconda 3, Jupyter Notebook 사용 dart_fss 0.4.0

업데이트로 올려주셨던 xbrl_viewer.py와 reports.py는 모두 수정하였습니다. 그럼에도 아래와 같이, Jupyter Notebook에서 호출시 보여집니다.

호출코드와 에러화면은 각각 다음과 같습니다.

---------- Jupyter 호출코드 --------------------- import dart_fss as dart

별도재무제표 추출.

report_tp : annual(사업보고서)

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

api_key = 'dart 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='20230101', 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()

다음은 에러화면입니다.(23년 2분기까지는 재무정보 다운이 됨)

------------------------- 에러 화면 ------------------------------------------------- Traceback (most recent call last): File "C:\Users\20200319\Anaconda3\lib\site-packages\dart_fss\filings\reports.py", line 404, in load_xbrl file_path = download_xbrl(path=path, rcept_no=self.rcept_no) File "C:\Users\20200319\Anaconda3\lib\site-packages\dart_fss\api\finance\xbrl.py", line 38, in download_xbrl resp = request.download(url=url, path=temp, payload=payload) File "C:\Users\20200319\Anaconda3\lib\site-packages\dart_fss\utils\request.py", line 248, in download raise FileNotFoundError('target does not exist') FileNotFoundError: target does not exist

During handling of the above exception, another exception occurred:

Traceback (most recent call last): File "C:\Users\20200319\Anaconda3\lib\site-packages\dart_fss\fs\extract.py", line 1435, in extract nstatements = analyze_report(report=report, File "C:\Users\20200319\Anaconda3\lib\site-packages\dart_fss\fs\extract.py", line 1257, in analyze_report xbrl = report.xbrl File "C:\Users\20200319\Anaconda3\lib\site-packages\dart_fss\filings\reports.py", line 395, in xbrl self.load_xbrl() File "C:\Users\20200319\Anaconda3\lib\site-packages\dart_fss\filings\reports.py", line 407, in load_xbrl xbrl_attached = self._get_xbrl() File "C:\Users\20200319\Anaconda3\lib\site-packages\dart_fss\filings\reports.py", line 428, in _get_xbrl attached_files = self.find_all(query) File "C:\Users\20200319\Anaconda3\lib\site-packages\dart_fss\filings\reports.py", line 389, in find_all dataset[s] = func_set[s]() File "C:\Users\20200319\Anaconda3\lib\site-packages\dart_fss\filings\reports.py", line 376, in fn_xbrlviewer def fn_xbrlviewer(): return self.xbrlviewer.find_all(kwargs) File "C:\Users\20200319\Anaconda3\lib\site-packages\dart_fss\filings\xbrl_viewer.py", line 184, in find_all dataset[s] = func_set[s]() KeyError: 'xbrlviewer' C:\Users\20200319\Anaconda3\lib\site-packages\dart_fss\fs\extract.py:1450: RuntimeWarning: Unable to extract financial statements: {'rcp_no': '20231114002308', 'corp_code': '00124540', 'corp_name': '대우건설', 'stock_code': '047040', 'corp_cls': 'Y', 'report_nm': '분기보고서 (2023.09)', 'flr_nm': '대우건설', 'rcept_dt': '20231114', 'rm': ''}. warnings.warn(warnings_text, RuntimeWarning)

바쁘시겠지만 답변 부탁드립니다!! 또 추가로 제가 드려야 할 정보가 있다면 말씀해주시기 바랍니다!

감사합니다.

(첨부로, 저기 언급되는 extract를 송부드립니다.)

extract code.txt

tejung2 commented 8 months ago

앗 해결하였습니다 ㅎㅎㅎ 5일전에 배포된 xbrlviewer를 제가 업데이트를 안했던 탓이네요! closing 하겠습니다 ㅎㅎ 항상 잘 쓰고 있습니다. 너무 감사합니다!

josw123 commented 8 months ago

넵, 사용 감사합니다!

tejung2 commented 8 months ago

josw123님 추가로 혹시, 주석도 XBRL로 업로드 되면 fs_tp에 notes를 추가하면 되는지 문의드립니다!

josw123 commented 8 months ago

제무 공시 기본 정보에 관한 내용은 아래와 같이 접근가능합니다.


import dart_fss as dart

corp_list = dart.get_corp_list()

# 삼성전자 code
corp_code = '00126380'

# 삼성전자
samsung = corp_list.find_by_corp_code(corp_code=corp_code)

# 사업보고서 검색
reports = samsung.search_filings(bgn_de='20190101', pblntf_detail_ty='a001')

# 첫번째 리포트 선택
report = reports[0]

# 리포트의 xbrl 데이터
xbrl = report.xbrl

# 감사정보
audit = xbrl.get_audit_information()

#작성자정보
author = xbrl.get_author_information()

# 공시 문서 정보
docs_info = xbrl.get_document_information()

#공시 대상 정보
entity_info = xbrl.get_entity_information()

#공시 기간 정보
period_info = xbrl.get_period_information()

만약 주석이 XBRL에 첨부된다면 라이브러리 업데이트는 진행할 예정이긴 합니다만, 주석은 아직 DART 사이트에 업로드된 XBRL에 작성된적이 없기 때문에 관련 코드가 없습니다.

tejung2 commented 8 months ago

그렇군요..! 넵 알겠습니다 ㅎㅎ 답변 감사드립니다!!