투자자/알고리즘

코딩근황_ 사업보고서에서 재무제표 엑셀 바로 다운받기

나그네_즈브즈 2021. 4. 22. 22:31

전자공시시스템에서 사업보고서를 열면, 그 단계에서부터 재무제표를 저장하기까지는 다시 여러 과정이 필요하다. 예전에 알아뒀다가 요즘 실행에 옮기고 있는 트릭이 있는데, 사업보고서 화면에서 재무제표를 깔끔한 형태의 엑셀 파일로 다운받을 수 있는 팁이 있다.

 

사업보고서 오른쪽 위에 보이는 "다운로드" 아이콘을 클릭해 보자. 새로운 창이 열리면서 재무제표 엑셀파일을 다운받을 수 있는 메뉴를 제공해준다. 이 부분을 클릭하면 파일이 컴퓨터에 저장된다. 이 과정을 컴퓨터에게 맡길 수도 있다. 열려 있는 각각의 창이 가리키고 있는 URL을 잘 따라가보면 된다.

 

마지막 다운로드 팝업창의 소스코드를 보면 최종 URL을 조립하는 공식이 잘 나와있다. 

 

사업보고서에서 재무제표 엑셀파일을 저장해내는 과정

전자공시시스템의 URL에는 공통적인 구조가 있다. 기본 + 기능 + 옵션(복수의 옵션은 서로 & 기호로 연결된다)의 모습이고, 기본은 "http://dart.fss.or.kr/"이다. 예를 들면, 원래 사업보고서 창의 URL은

"http://dart.fss.or.kr/"+"dsaf001/main.do?" 여기에 "rcpNo=xxxxxxxxxxxxxx" 이 추가된 구조로 되어 있다. 기본 URL에다가 "dsaf001/main.do?" 부분이 기능 파트, 옵션으로 rcpNo가 얼마인지를 입력해주는 형태이다.

 

다음으로, 사업보고서 화면에서 소스코드를 참조하면 dcm_no 라는 옵션도 추가로 알아낼 수 있다. 이건 다운로드 팝업창에 접근할 때 필요한 옵션이 된다. 다운로드 팝업창의 URL은 구조로만 보면 역시 비슷한데, 기능 URL 부분을 "pdf/download/main.do?"로 바꿔준 다음 옵션으로 "rcp_no=xxxxxxxxxxxxxx&dcm_no=xxxxxxx"를 넣어주면 된다. 

 

컴퓨터가 굳이 다운로드 팝업창을 열 필요는 없다. rcp_no와 dcm_no만 알면 재무제표 엑셀파일의 다운로드 링크는 조립할 수 있다. 이 마지막 URL의 구조는 기본+기능+rcp_no/dcm_no 형태에서 기능 부분을 "pdf/download/excel.do?"로 바꿔넣은 다음에 맨 끝에 "lang=ko" 옵션을 역시 & 기호로 연결해 달아주면 끝난다.

 

정리하면, rcp_no와 dcm_no만 알면 재무제표 엑셀파일은 다운받을 수 있다.

0. rcp_no를 알아낸다. 이걸 가지고

1. 사업보고서(dsaf001/main.do?)의 소스코드를 열어 dcm_no를 알아낸다. 이것까지 조합해

2. 엑셀파일 다운로드(pdf/download/excel.do? + ... + &lang=ko) URL을 완성한다.

 

  기본 URL 기능 URL 옵션1 옵션2 옵션3
사업보고서 http://dart.fss.or.kr/ dsaf001/main.do? rcpNo=xxxxxxxxxxxxxx    
팝업창 http://dart.fss.or.kr/ pdf/download/main.do? rcp_no=xxxxxxxxxxxxxx &dcm_no=_______  
엑셀파일 http://dart.fss.or.kr/ pdf/download/excel.do? rcp_no=xxxxxxxxxxxxxx &dcm_no=_______ &lang=ko

보아하니 이 모든 과정의 첫단추는 rcp_no를 알아내는 것인 듯하다. rcp_no는 모든 사업보고서가 전자공시시스템에 등록될 때 서버가 이를 recept할 때 생겨나는 코드다. 동화약품의 2020년 사업보고서는 20210317000578라는 코드를 가지고 있다. 2021년 03월 17일에 서버에 등록된 공시 중에서 000578번째 순서를 부여받은 것이다. 따라서 하루 만에 1000000개의 공시가 몰려들지 않는 한, 모든 공시는 저마다의 고유한 rcp_no를 가지고 있다. 

 

내가 원하는 회사의 특정 공시의 rcp_no를 그렇다면 어떻게 정확히 알 수 있을까? 이걸 지금 설명하게 되면 '엑셀파일 다운로드' 트릭을 설명하기 위한 이 포스팅의 목적에서 상당히 멀어지기 때문에, 오늘은 생략해야겠다.

반응형