본문 바로가기

Data Science/Data Collection

[04. 금융감독원 API] 001. 공시정보 – 고유번호

728x90

금융감독원 API가 전면 개편되었다. 공시정보, 사업보고서 주요정보, 상장기업 재무정보, 지분공시 종합정보로 더욱 세분화되고 더 많은 데이터를 제공하기로 했다.

 

 

전자공시 OPENDART 시스템 | 개발가이드

조회중입니다. 잠시만 기다려주세요.

opendart.fss.or.kr

 

위 사이트에 접속해서 인증키를 신청해서 발급받으면 API를 사용할 수 있다.

 

기존의 공시API와 비교하여 불편한 점은 기존의 종목코드를 Input값으로 넣지 않고 기업의 고유번호를 입력하게 바뀌었다. 비상장기업까지 조회할 수 있게 하기 때문인 것 같다. 따라서 제일 먼저 해야할 일은 기업의 고유번호를 알아내는 일이다.

 

[그림 4.1] 고유번호 개발가이드

 

응답 방식이 zip – FILE(Stream) 방식이다. 압축파일로 제공한다는 뜻이다. 이를 파이썬으로 구현하는 방법은 다음과 같다.

 

from bs4 import BeautifulSoup
import pandas as pd
import requests
from io import BytesIO
from zipfile import ZipFile

def get_company_code(api_key):
    url = 'https://opendart.fss.or.kr/api/corpCode.xml?crtfc_key=%s' % api_key
    response = requests.get(url)
    zip_file = ZipFile(BytesIO(response.content))
    files = zip_file.namelist()
    soup = ''

    with zip_file.open(files[0]) as csvfile:
        soup = BeautifulSoup(csvfile.read(), 'lxml')
        soup = soup.findAll('list')

    data = []
    for company in soup:
        data.append({
            'corp_code': company.corp_code.text,
            'corp_name': company.corp_name.text,
            'stock_code': company.stock_code.text,
            'modify_date': company.modify_date.text
        })

    return pd.DataFrame(data)

if __name__ == '__main__':
    api_key ='*'
    company_code = get_company_code(api_key)
    print(company_code)


결과 값
	  corp_code          corp_name stock_code modify_date
0      00434003                 다코               20170630
1      00434456               일산약품               20170630
2      00430964              굿앤엘에스               20170630
3      00432403               한라판지               20170630
4      00388953  크레디피아제이십오차유동화전문회사               20170630
...         ...                ...        ...         ...
76579  00129235               삼화왕관     004450    20191104
76580  01416721           에이치에스하이엘               20191104
76581  01414477               메가드림               20191104
76582  01415573               에스제이               20191104
76583  00436144            유코카캐리어스               20200118
728x90