파이썬 기업 재무제표 데이터, 쉽게 수집하는 방법은?

목차

    2020. 4. 17. 11:30

    파이썬으로 데이터를 수집하는 방법은 여러가지가 있다. 파일을 다운 받을 수도 있고, 웹크롤링을 할 수도 있다. 하지만, API로 제공되는 데이터를 수집하는 것이 가장 편리하다. 데이터 레이아웃이 정해져 있고, 웹크롤링을 할 때처럼 IP차단 등의 부담도 없기 때문이다. 기업 재무제표 데이터를 API로 수집할 수 있는 방법은 그 동안 없었다. 하지만, 이를 OPEN API로 공개했다. 오늘은 기업 재무제표 데이터를 파이썬에서 수집하는 방법에 대해서 알아보도록 하겠다. API를 이용해서 말이다.


    데이터_수집



    API로 데이터를 수집하는 방법은?

    사실 웹크롤링과 오픈API로 데이터를 수집하는 방법은 동일하다. 다만, 웹크롤링 하는 것은 웹페이지를 파싱하고, 원하는 부분을 추출해야 하기 때문에 더 번거럽고 힘들다. 오픈API로 데이터를 제공하는 경우에는 XML이나 JSON포맷으로 제공하기 때문에, 더 쉽게 수집할 수 있다.

    최근에 전자공시 OPEN DART 시스템이 오픈되었다. 여기서는 기업의 재무제표 데이터를 API를 통해서 수집할 수 있다. API로 데이터를 수집하는 방법을 하나씩 알아보도록 하자.


    오픈DART_시스템

    ( 오픈DART 시스템 바로가기 )




    1) URL정보를 확인하다.

    일단 API명세서를 참고해서 접속해야 하는 URL정보를 확인하다. 보통, 파라미터에 값을 넣어 원하는 값을 수집할 수 있도록 되어 있다. 기업 재무제표 중에서 배당금 데이터가 궁금해서 해당 항목을 확인해보았다.

    [개발가이드] 메뉴에 [사업보고서 주요 항목]을 살펴보면, 배당에 관한 사항을 제공하고 있는 것을 알 수 있다. 요청인자로 4가지 항목을 제공해야 한다. 요청인자는 URL에 접속할 때, 입력파라미터로 넣어야 하는 정보들이다. 인증키, 고유번호, 사업연도, 보고서 코드에 해당하는 값을 넣어야 한다.

    사업보고서_주요정보_목록

    ( 이 외에도 다양한 데이터를 제공하고 있다 )


    인증키는 API로 요청하는 사람들을 인증하기 위해서 사용한다. 오픈DART시스템 홈페이지에 가입하고, 인증키를 신청하면 발급받을 수 있다.



    2) 파이썬에서 해당 URL에 접속하다.

    이제 파이썬에서 이 URL에 접속해야 한다. 접속하는 방법도 여러가지가 있는데, 파이썬에서 기본으로 제공하는 urllib모듈을 사용하도록 하겠다. requests모듈을 사용하는 경우도 있는데, 필자는 개인적으로 urllib모듈이 더 친숙하다. urllib모듈로 URL에 접속하는 방법에 대해서 자세한 내용이 궁금하다면, 아래 링크를 참조하도록 하자.
    ( 참조: 파이썬 urllib패키지로 웹크롤링 하는 방법 알아보기! )


    from urllib.request import urlopen


    CRTFC_KEY="인증키 입력"

    corp_code="00126380"

    bsns_year="2019"

    # 11011:사업보고서

    reprt_code="11011"


    url="https://opendart.fss.or.kr/api/alotMatter.json?crtfc_key={}" \

        "&corp_code={}&bsns_year={}&reprt_code={}".format(CRTFC_KEY,corp_code,bsns_year,reprt_code)


    req=urlopen(url)

    result=req.read()




    3) 수집한 데이터 포맷에 맞게 파싱한다.

    OPEN API의 경우 XML이나 JSON포맷으로 데이터를 제공한다. 데이터를 파싱하는 내용은 이전 포스팅에서도 많이 다루었으니 생략하도록 하겠다. 자세한 내용은 아래 포스팅을 참조하기 바란다.
    ( 참조: 파이썬으로 블리자드 디아블로3 API 이용하기! )


    import json

    import pandas as pd


    result_json=json.loads(result)

    print(result_json)




    오늘은 이렇게 파이썬에서 API를 이용해서 기업제무제표 데이터를 수집하는 방법에 대해서 알아보았다. 시간이 흐를수록 점점 더 많은 데이터가 공개되고 있다. 주로 공공기관에서 다루는 데이터가 많이 공개되고 있는데, 앞으로는 민간기업에서 가지고 있는 데이터도 적절한 절차를 통해 수집할 수 있는 길이 열리면 좋을 듯 싶다.