josw123 / dart-fss

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

일부 재무제표가 추출되지 않습니다. #66

Closed cinema08 closed 3 years ago

cinema08 commented 3 years ago

좋은 라이브러리를 제공해주셔서 감사합니다. 메리츠화재의 2020년 1분기 재무제표 중에 연결포괄손익계산서 항목이 추출되지 않습니다. image

cis is None으로 표시가 되는 실제로 reports1['cis'] 이렇게 추출해도 데이타가 나오지를 않습니다.

josw123 commented 3 years ago

안녕하세요.

확인해보니 HTML 분석하는 과정에서 타이틀(ex: 연결포괄손익계산서)이 너무 긴 경우 이를 필터링하기 위한 코드에서 발생하는 문제로 생각됩니다. (길이가 12 이상인 경우 잘못된 정보로 판단하였으나, 메리치화재 분기 보고서의 경우 글자 수가 12자이기 때문에 발생하는 문제입니다.)

이 문제는 수정하여 업로드 하도록 하겠습니다.

cinema08 commented 3 years ago

감사합니다.

cinema08 commented 3 years ago

image 부국증권도 사업보고서중 연결 재무상태표와 현금흐름표가 추출되지 않습니다.

josw123 commented 3 years ago

안녕하세요.

확인해보니 연결 재무상태표와 연결 현금흐름표의 Tag 구성이 일반적이지 않아 생기는 문제로 파악됩니다.

부국증권의 연결 재무상태표와 연결 현금흐름표의 HTML은 아래와 같습니다.

<p>
    <span style="font-family:&quot;굴림&quot;, Gulim;font-weight:bold;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 연 결</span>
    <span style="font-family:&quot;굴림&quot;, Gulim;font-weight:bold;">&nbsp;재 무 상 태 표</span><span style="font-family:&quot;굴림&quot;, Gulim;font-weight:bold;"></span>
    <br>
</p>

일반적인 HTML은 아래와 같습니다.

<p>
    <span style="font-family:&quot;굴림&quot;, Gulim;font-weight:bold;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; 연 결 포 괄 손 익 계 산 서</span>
    <span style="font-family:&quot;굴림&quot;, Gulim;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="font-family:&quot;굴림&quot;, Gulim;font-weight:bold;"></span>
    <br>
</p>

일반적인 경우 span 내부에 하나의 문장으로 작성되어 있으나, 부국생명의 경우 2개로 나누어져 발생하는 문제입니다.

dart-fss 라이브러리의 WEB 추출 방식은, 각각의 테이블을 추출하고 테이블의 타이틀 일치 여부를 조사하여 재무제표 여부를 확인합니다. 이때 테이블의 바로 직전 HTML TAG의 텍스트를 확인하여 테이블이 재무제표 테이블인지 아닌지를 판별하게 됩니다.

그런데 단순 직전 HTML TAG의 TEXT만 추출하여 분석하는 경우 주석부분에 추가된 테이블을 추출하는 경우가 있어 직전 TAG의 Children을 각각 조사하여 검색하게 됩니다.

이러한 추출방법으로 인해 부국생명의 연결 재무상태표와 연결 현금흐름표의 경우 "연결" 이 포함된 테그와 "재무상태표"를 포함한 테그 각각을 검색하게 되므로 "연결 재무상태표"로 인식하지 못하게 되는 것입니다.

이 문제는 추가적인 검토후 코드를 업로드 하도록 하겠습니다.

cinema08 commented 3 years ago

감사합니다.