josw123 / dart-fss

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

재무상태표 가져오기 오류 문의 #11

Closed paladinz67 closed 5 years ago

paladinz67 commented 5 years ago

안녕하세요, dart_fss를 이용하여 기업 분석 코드를 작성하고 있습니다. 저는 10년 이상의 장기간 데이터 분석이 필요하여 아래와 같이 2000년 1월 1일 부터 현재까지의 재무상태표 read를 사도하였습니다.

crp_name = '고려제강' crp_list = dart.get_crp_list ()
crp_name_index = crp_list.find_by_name ( crp_name ) [0]
fs_tmp = crp_name_index.get_financial_statement(start_dt='20000101')

그런데, 아래와 같은 오류가 발생합니다. Download: 28.0KB [00:00, 177KB/s] Extracting fs-annual: 48%|████▊ | 13/27 [01:01<01:01, 4.41s/page]Traceback (most recent call last): File "D:\Proj\Analytics\Extracting_from_DART\dart_fss\venv\lib\site-packages\IPython\core\interactiveshell.py", line 3325, in run_code exec(code_obj, self.user_global_ns, self.user_ns) File "", line 1, in fs_tmp = crp_name_index.get_financial_statement(start_dt='20000101') File "D:\Proj\Analytics\Extracting_from_DART\dart_fss\venv\lib\site-packages\dart_fss\crp.py", line 188, in get_financial_statement separator=separator) File "D:\Proj\Analytics\Extracting_from_DART\dart_fss\venv\lib\site-packages\dart_fss\fs.py", line 533, in search_financial_statement statements = append_fs(statements, reports, fs_tp=fs_tp, separate=separate, lang=lang) File "D:\Proj\Analytics\Extracting_from_DART\dart_fss\venv\lib\site-packages\dart_fss\fs.py", line 386, in append_fs fs = read_fs_table(report, fs_tp=fs_tp, separate=separate, lang=lang) File "D:\Proj\Analytics\Extracting_from_DART\dart_fss\venv\lib\site-packages\dart_fss\fs.py", line 354, in read_fs_table df = html_to_df(soup, regex_text, separate=separate, lang=lang) File "D:\Proj\Analytics\Extracting_from_DART\dart_fss\venv\lib\site-packages\dart_fss\fs.py", line 245, in html_to_df korean_unit = header_html.find(text=won_regex) AttributeError: 'NoneType' object has no attribute 'find'

삼성전자의 경우는 start_dt='20000101'로 해도 오류 없이 읽어 오는데 데이터는 2005년에서 현재까지 데이터만 읽어 옵니다. 확인 좀 부탁 드립니다. 감사합니다.

josw123 commented 5 years ago

올려주신 '고려제강'에서 발생하는 오류는 수정하여 올렸습니다.

또한 2010년 이전의 일부 연결재무제표 데이터의 경우 사업보고서 본문에 추가되어 있지 않고

사업보고서 이후 첨부 형태로 추가 되어 있습니다. (사업보고서: http://dart.fss.or.kr/dsaf001/main.do?rcpNo=20090330001502) (연결감사보고서: http://dart.fss.or.kr/dsaf001/main.do?rcpNo=20090330001502&dcmNo=2277082)

현재 dart-fss 라이브러리는 사업보고서 본문만 검색하여 재무제표를 추출하기 때문에 일부 연결재무제표를 추출하지 못하는 상황입니다. ((ex) 삼성전자 2005년 이전 데이터)

추후 dart-fss 라이브러리에 첨부 형태로 추가된 재무제표를 검색하는 기능을 추가하도록 하겠습니다.

paladinz67 commented 5 years ago

안녕하십니까, 빠르게 수정해 주셔서 감사합니다. 수정해 주신 버전으로 시험해 보니 이번엔 아래와 같은 오류가 발생합니다. ㅠㅠ html5lib package를 설치해도 여전이 같은 오류가 발생합니다. 'GS블로벌' 뿐만 아니라, 전에 말씀 드렸던 '고려제강'에서도 같은 오류가 발생합니다.

항상 빠르게 응답 및 수정해 주셔서 감사합니다. 제게 많은 도움이 됩니다. 감사합니다.

crp_name='GS글로벌' crp_name_index = crp_list.find_by_name (crp_name)[0] fs_tmp = crp_name_index.get_financial_statement ( start_dt = start_dt, fs_tp = 'fs') Download: 0.00KB [00:00, ?KB/s] Download: 13.0KB [00:00, 117KB/s] Download: 32.0KB [00:00, 168KB/s] Extracting fs-annual: 0%| | 0/17 [00:00<?, ?page/s] Extracting fs-annual: 6%|▌ | 1/17 [00:04<01:19, 5.00s/page] Extracting fs-annual: 12%|█▏ | 2/17 [00:10<01:15, 5.05s/page] Extracting fs-annual: 18%|█▊ | 3/17 [00:15<01:13, 5.25s/page] Extracting fs-annual: 24%|██▎ | 4/17 [00:21<01:09, 5.31s/page] Extracting fs-annual: 29%|██▉ | 5/17 [00:26<01:03, 5.33s/page] Extracting fs-annual: 35%|███▌ | 6/17 [00:31<00:58, 5.28s/page] Extracting fs-annual: 41%|████ | 7/17 [00:37<00:52, 5.25s/page] Extracting fs-annual: 47%|████▋ | 8/17 [00:42<00:47, 5.23s/page] Extracting fs-annual: 53%|█████▎ | 9/17 [00:46<00:39, 4.92s/page] Extracting fs-annual: 59%|█████▉ | 10/17 [00:51<00:34, 4.89s/page] Extracting fs-annual: 65%|██████▍ | 11/17 [00:57<00:31, 5.31s/page] Extracting fs-annual: 71%|███████ | 12/17 [01:03<00:28, 5.60s/page] Extracting fs-annual: 76%|███████▋ | 13/17 [01:10<00:23, 5.84s/page] Extracting fs-annual: 82%|████████▏ | 14/17 [01:16<00:18, 6.10s/page] Extracting fs-annual: 88%|████████▊ | 15/17 [01:23<00:12, 6.25s/page] Extracting fs-annual: 94%|█████████▍| 16/17 [01:24<00:04, 4.66s/page]Traceback (most recent call last): File "D:\Proj\Analytics\Extracting_from_DART\dart_fss\venv\lib\site-packages\IPython\core\interactiveshell.py", line 3325, in run_code exec(code_obj, self.user_global_ns, self.user_ns) File "", line 1, in fs_tmp = crp_name_index.get_financial_statement ( start_dt = start_dt, fs_tp = 'fs') File "D:\Proj\Analytics\Extracting_from_DART\dart_fss\venv\lib\site-packages\dart_fss\crp.py", line 188, in get_financial_statement separator=separator) File "D:\Proj\Analytics\Extracting_from_DART\dart_fss\venv\lib\site-packages\dart_fss\fs.py", line 577, in search_financial_statement statements = append_fs(statements, reports, fs_tp=fs_tp, separate=separate, lang=lang) File "D:\Proj\Analytics\Extracting_from_DART\dart_fss\venv\lib\site-packages\dart_fss\fs.py", line 430, in append_fs fs = read_fs_table(report, fs_tp=fs_tp, separate=separate, lang=lang) File "D:\Proj\Analytics\Extracting_from_DART\dart_fss\venv\lib\site-packages\dart_fss\fs.py", line 398, in read_fs_table df = html_to_df(soup, includes, excludes, separate=separate, lang=lang) File "D:\Proj\Analytics\Extracting_from_DART\dart_fss\venv\lib\site-packages\dart_fss\fs.py", line 309, in html_to_df df = convert_table_to_dataframe(tbody) File "D:\Proj\Analytics\Extracting_from_DART\dart_fss\venv\lib\site-packages\dart_fss\fs.py", line 305, in convert_table_to_dataframe return pd.read_html(table_body)[0] File "D:\Proj\Analytics\Extracting_from_DART\dart_fss\venv\lib\site-packages\pandas\io\html.py", line 1094, in read_html displayed_only=displayed_only) File "D:\Proj\Analytics\Extracting_from_DART\dart_fss\venv\lib\site-packages\pandas\io\html.py", line 894, in _parse parser = _parser_dispatch(flav) File "D:\Proj\Analytics\Extracting_from_DART\dart_fss\venv\lib\site-packages\pandas\io\html.py", line 840, in _parser_dispatch raise ImportError("html5lib not found, please install it") ImportError: html5lib not found, please install it

josw123 commented 5 years ago

안녕하세요. 보내주신 내용을 확인해본 결과 html5lib 라이브러리가 설치되어 있지 않은 경우 발생하는 오류 같습니다.

아래와 같은 환경에서는 동작하는 것을 확인하였으니 한번 시도해보시기 바랍니다. 만약 그래도 동작을 안하시는 경우 os 환경 및 Python 버전을 알려주시면 감사하겠스빈다.

Windows 10(Python 3.7.3), macOS Mojave(Python 3.7.1)

###### requirements.txt######
arelle==2.2
backcall==0.1.0
beautifulsoup4==4.8.0
certifi==2019.6.16
chardet==3.0.4
colorama==0.4.1
dart-fss==0.1.11
decorator==4.4.0
et-xmlfile==1.0.1
fake-useragent==0.1.11
html5lib==1.0.1
idna==2.8
ipython==7.6.1
ipython-genutils==0.2.0
isodate==0.6.0
jdcal==1.4.1
jedi==0.14.1
lxml==4.3.4
numpy==1.16.4
openpyxl==2.6.2
pandas==0.25.0
parso==0.5.1
pickleshare==0.7.5
prompt-toolkit==2.0.9
Pygments==2.4.2
python-dateutil==2.8.0
pytz==2019.1
requests==2.22.0
six==1.12.0
soupsieve==1.9.2
tqdm==4.32.2
traitlets==4.3.2
urllib3==1.25.3
wcwidth==0.1.7
webencodings==0.5.1
pip install -r requirements.txt
paladinz67 commented 5 years ago

감사합니다. 분명히 html5lib를 설치했는데 동작을 안해서 지웠다가 다시 설치하니 되네요. 감사합니다. 혹시 크게 방해가 안 된다면 앞으로 계속 좀 여쭤봐도 될까요? ^^

josw123 commented 5 years ago

네, 사용하시다 궁금한점 남기시면 답변드리겠습니다 ㅎㅎ