josw123 / dart-fss

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

corp_code가 필드의 부적절한 값입니다. #111

Closed 0x68756d8616e6f69664 closed 2 years ago

0x68756d8616e6f69664 commented 2 years ago

안녕하세요. E1 이름의 회사의 재무제표를 추출하던 중 dart_fss.errors.errors.InvalidField: corp_code가 필드의 부적절한 값입니다. 오류가 발생해 문의드립니다. 오류 메세지의 전문은 다음과 같습니다.

Traceback (most recent call last):  File "(개인파일경로)\Python\Python39\lib\site-packages\dart_fss\fs\extract.py", line 1265, in search_annual_report reports = search_filings(corp_code=corp_code, bgn_de=bgn_de, end_de=end_de,  File "(개인파일경로)\Python\Python39\lib\site-packages\dart_fss\filings\search.py", line 51, in search resp = search_filings(corp_code=corp_code,  File "(개인파일경로)\Python\Python39\lib\site-packages\dart_fss\api\filings\search_filings.py", line 81, in search_filings check_status(**dataset)  File "(개인파일경로)\Python\Python39\lib\site-packages\dart_fss\errors\checker.py", line 47, in check_status raise err(msg) dart_fss.errors.errors.InvalidField: corp_code가 필드의 부적절한 값입니다.  During handling of the above exception, another exception occurred:  Traceback (most recent call last):  File "(개인파일경로).py", line 45, in fs = dart.fs.extract(corp_code=re.sub(r'[^0-9]', '', str(samsung)), bgn_de='20191231', end_de='20221231', fs_tp=('bs', 'cis'), report_tp='quarter', cumulative=True, progressbar=False)  File "(개인파일경로)\Python\Python39\lib\site-packages\dart_fss\fs\extract.py", line 1460, in extract raise e  File "(개인파일경로)\Python\Python39\lib\site-packages\dart_fss\fs\extract.py", line 1385, in extract reports = search_annual_report(corp_code=corp_code, bgn_de=bgn_de, end_de=end_de, separate=True)  File "(개인파일경로)\Python\Python39\lib\site-packages\dart_fss\fs\extract.py", line 1277, in search_annual_report raise RuntimeError('Could not find an annual report') RuntimeError: ('Could not find an annual report', 'Unexpected Error') 

제공해주신 소스코드를 토대로 여러 동작을 만들어보며 많이 배우고 있습니다. 감사합니다. 위와 같은 오류를 해결하는 방법이 있을까요? corp_code를 불러오지 못 하는 부분은 패스시키는 식으로 예외처리를 진행했으나 유독 E1은 그렇게 동작을 진행할 수 없어서 문의드립니다.

기존에는 다음과 같이 처리했습니다.

    # 기업 검색
    corporation = corp_list.find_by_stock_code(cell.value) // cell.value는 엑셀파일에 저장되어 있는 티커를 통해 불러옴
    print(corporation)
    if(corporation == None):
        continue

다시 한 번 감사드립니다. 수준이 굉장히 높아 여러모로 배우고 싶은 마음이 드는 것 같습니다 ^^.

josw123 commented 2 years ago

안녕하세요.

corp_code에 올바르지 않은 정보가 입력되어서 그런것 같습니다. 아래의 코드에서 re.sub(r'[^0-9]', '', str(samsung))를 통해 corp_code를 추출하실때 올바르지 않는 값이 추출되는것 같습니다.

fs = dart.fs.extract(corp_code=re.sub(r'[^0-9]', '', str(samsung)), bgn_de='20191231', end_de='20221231', fs_tp=('bs', 'cis'), report_tp='quarter', cumulative=True, progressbar=False)

만약 corp_code만 정확하면 아래와 같이 E1에서 오류가 발생하지 않을 것으로 생각됩니다.

image

0x68756d8616e6f69664 commented 2 years ago

문제가 해결됐습니다. 감사합니다.