Closed yhs968 closed 5 years ago
Dart-fss 라이브러리에서는 공시 기수(e.g. 제 12기, 제 42기 1분기) 와 날자를 매칭시켜 사용합니다. 예를들어 아래와 같은 경우 Table Header의 "제 43 기초"를 날짜로 변경하기 위해 "제 43 기초"를 이용하여 "2010.01.01"를 추출하여 사용합니다.
연결 재무상태표
제 44 기 2011.12.31 현재 제 43 기 2010.12.31 현재 제 43 기초 2010.01.01 현재
제 44 기 | 제 43 기 | 제 43 기초 | |
---|---|---|---|
자산 | |||
유동자산 | 48,926,350 | 43,520,154 | 39,081,676 |
현금및현금성자산 | 6,231,946 | 6,215,815 | 5,400,090 |
그런데 삼성전자의 제42기 1분기의 Page를 보면 아래와 같이 되어 있습니다. 이때의 문제는 "제 42기 1분기말"과 매칭되는 문자열이 없다는 것입니다. 즉, 날짜를 추출하기 위해 사용되는 문장 "제42기1분기 2010년 03월 31일 현재"에는 "제42기1분기"로 작성되어 있고, Table Header에는 "제 42기 1분기말"로 작성되어 있어 매칭되는 문자열을 찾지 못하는 것입니다.
연 결 재 무 상 태 표
제42기1분기 2010년 03월 31일 현재 제41기말 2009년 12월 31일 현재
과목명 | 제 42기 1분기말 | 제 41기말 |
---|---|---|
자 산 | ||
유 동 자 산 | 55,296,702 | 54,211,297 |
현금및현금성자산 | 9,225,243 | 10,149,930 |
이 문제는 추후에 업데이트를 통해 해결하도록 하겠습니다. 버그 리포트 감사합니다.
체크해주셔서 감사합니다!
안녕하세요. 라이브러리 잘 쓰고 있습니다. 분기별 재무제표 조회 코드를 돌리다가 다음과 같은 에러가 발생해서 문의드립니다. 뭔가 필드명이 안맞아서 그러는 것 같은데 혹시 해당 에러에 대해 체크 부탁드릴 수 있을까요? 감사합니다.
~/anaconda3/lib/python3.7/site-packages/dart_fss/crp.py in get_financial_statement(self, start_dt, end_dt, fs_tp, separate, report_tp, lang, show_abstract, show_class, show_depth, show_concept, separator) 186 report_tp=report_tp, lang=lang, show_abstract=show_abstract, 187 show_class=show_class, show_depth=show_depth, show_concept=show_concept, --> 188 separator=separator) 189 190
~/anaconda3/lib/python3.7/site-packages/dart_fss/fs.py in search_financial_statement(crp_cd, start_dt, end_dt, fs_tp, separate, report_tp, lang, show_abstract, show_class, show_depth, show_concept, separator) 484 quarter = search_report_with_cache(crp_cd=crp_cd, start_dt=start_dt, end_dt=end_dt, 485 bsn_tp=['A003'], page_set=100, series='asc') --> 486 statements = append_fs(statements, quarter, fs_tp=fs_tp, separate=separate, lang=lang, report_tp='quarter') 487 488 columns = list(statements.columns)
~/anaconda3/lib/python3.7/site-packages/dart_fss/fs.py in append_fs(financial_statements, reports, fs_tp, separate, lang, report_tp) 327 regex_label = re.compile(r'[ㄱ-힣]+(?[ㄱ-힣]+)?') 328 for report in tqdm(reports[1:], desc=desc, unit='page'): --> 329 fs = read_fs_table(report, fs_tp=fs_tp, separate=separate, lang=lang) 330 331 if fs is None:
~/anaconda3/lib/python3.7/site-packages/dart_fss/fs.py in read_fs_table(report, fs_tp, lang, separate) 295 regex_text = separate_table if separate else consolidated_table 296 --> 297 df = html_to_df(soup, regex_text, separate=separate, lang=lang) 298 return df 299
~/anaconda3/lib/python3.7/site-packages/dart_fss/fs.py in html_to_df(soup, regex_text, separate, lang) 226 tbody = get_table_body(table_html) 227 df = pd.read_html(tbody)[0] --> 228 df.columns = rename_columns(header=header, columns=columns, lang=lang, separate=separate) 229 for column in df.columns[1:]: 230 df[column] = df[column].apply(str_to_float)
~/anaconda3/lib/python3.7/site-packages/dart_fss/fs.py in rename_columns(header, columns, lang, separate) 58 additional = '' 59 ---> 60 if header[key]['instant_datetime'] is None: 61 start_datetime = header[key]['start_datetime'].strftime('%Y-%m-%d') 62 end_datetime = header[key]['end_datetime'].strftime('%Y-%m-%d')
KeyError: '제42기1분기말'