본문 바로가기

Data Science/Data Collection

[04. 금융감독원 API] 003. 공시정보 – 공시검색

728x90

공시검색 API는 기업들의 공시를 검색할 수 있는 기능을 제공해준다. 특정기업이든 아니면 일자별로 등 다양하게 공시를 조회해 볼 수 있으며 특정 유형의 보고서만 검색하는 것도 가능하다.

 

[그림 4.3] 공시검색 개발가이드

 

다양한 요청인자를 통해서 원하는 방식으로 공시를 검색하는 것이 가능하다. 이를 이용해 삼성전자 사업보고서를 검색해보자.

 

import json
import pandas as pd
import requests

def get_announcement(api_key, code, start_dt, end_dt, op):
    fullUrl_ = 'https://opendart.fss.or.kr/api/list.json?crtfc_key=%s&corp_code=%s&' \
               'bgn_de=%s&end_de=%s%s' % (api_key, code, start_dt, end_dt, op)

    response = requests.get(fullUrl_, headers={'User-Agent': 'Mozilla/5.0'})
    result = response.text
    result = json.loads(result)

    if result['status'] == '000':
        total_page = result['total_page']

        data = []
        for p in range(1, int(total_page) + 1):
            fullUrl = fullUrl_ + '&page_no=%s' % (p)
            response = requests.get(fullUrl, headers={'User-Agent': 'Mozilla/5.0'})
            result = response.text
            result = json.loads(result)
            data.append(pd.DataFrame(result['list']))

        if len(data) == 0:
            data = pd.DataFrame()
        else:
            data = pd.concat(data)

        return data

if __name__ == '__main__':
    api_key ='*'
    code = '00126380'
    start_dt = '20190101'
    end_dt = '20200131'
    op = '&pblntf_ty=A&pblntf_detail_ty=A001'
    announcement = get_announcement(api_key, code, start_dt, end_dt, op)
    print(announcement)


결과 값
   corp_code    corp_name stock_code corp_cls  ...     rcept_no      flr_nm    rcept_dt rm
0  00126380      삼성전자     005930        Y  ...  20191114001273   삼성전자  20191114   
1  00126380      삼성전자     005930        Y  ...  20190814002218   삼성전자  20190814   
2  00126380      삼성전자     005930        Y  ...  20190515001605   삼성전자  20190515   
3  00126380      삼성전자     005930        Y  ...  20190401004781   삼성전자  20190401  연
728x90