[Python] 파이썬으로 전자공시시스템(DART) API 활용 상장기업 조회하는 방법 (with. corpCode.xml)

2022. 7. 17. 22:26코딩/Python

반응형

안녕하세요 코딩왕 코주부입니다.

 

주식 투자를 할 때

기업 정보를 얻기 위해 다양한 방법을 이용하고 계실텐데요. 

 

오늘은 DART(전자공시시스템) 에서

Open API를 활용하여

Python 으로 국내 주식 상장 기업 리스트를 받아오는 방법을 정리해보았습니다.

 

먼저, DART에서 API Key (crtfc_key)를 발급받으셔야 합니다.

https://opendart.fss.or.kr/uss/umt/EgovMberInsertView.do

 

전자공시 OPENDART 시스템 | 인증키 신청

 

opendart.fss.or.kr

 

위 사이트에 접속 후, 인증키 신청을 진행하시면 됩니다.

크게 어렵지 않으니, 천천히 발급 받으시기 바랍니다!

 

발급 받고 나면,

위와 같이 API Key를 확인할 수 있습니다.

 

(Key는 고유한 것이기 때문에 다른 곳에 공개하지 마시기 바랍니다!)

 

crtfc_key 가 준비되었으면

파이썬을 실행하시고, 아래 코드를 입력하세요.

 

import requests
import pandas as pd
from urllib.request import urlopen
from zipfile import ZipFile
from io import BytesIO
import ssl

crtfc_key = 'API Key 입력'
url = 'https://opendart.fss.or.kr/api/corpCode.xml'

def search_corp(url, crtfc_key):
    api_url = f'{url}?crtfc_key={crtfc_key}'
    context = ssl._create_unverified_context()
    res = urlopen(api_url, context = context)
    result = res.read()
    zipfile = ZipFile(BytesIO(result))
    for file in zipfile.namelist():
        z = zipfile.open(file)
        with open(file, 'w') as codefile:
            for l in z.readlines():
                codefile.write(l.decode())
    result_zip = open('CORPCODE.xml', 'r').read()
    df = pd.read_xml(result_zip)
    df.dropna(axis = 0, how = 'any', subset = ['stock_code'], inplace = True)
    df['stock_code'] = df['stock_code'].apply(lambda x: str(int(x)).zfill(6))
    return df

df_corp = search_corp(url, crtfc_key)

 

 

print(df_corp.head(50))
## 결과 출력해보기 ##

corp_code	corp_name	stock_code	modify_date
0	260985	한빛네트	036720	20170630
1	264529	엔플렉스	040130	20170630
2	358545	동서정보기술	055000	20170630
3	231567	애드모바일	032600	20170630
4	247939	씨모스	037600	20170630
5	359614	리더컴	056140	20170630
6	153551	허메스홀딩스	012400	20170630
7	344746	유티엑스	045880	20170630
8	261188	글로포스트	037830	20170630
9	268020	쏠라엔텍	030390	20170630
10	269287	보홍	041320	20170630
11	475286	동북아1호선박투자회사	078420	20170630
12	250775	에듀아크	046350	20170630
13	114321	데코	013650	20170630
14	191108	엘앤씨피	015390	20170630
15	167378	희훈디앤지	019640	20170630
16	225210	퓨쳐인포넷	058690	20170630
17	223346	쓰리디넷	035400	20170630
18	174129	제일저축은행	024100	20170630
19	114826	제일창업투자	026540	20170630
20	173333	현대DSF	016510	20170630
21	687599	네프로아이티	950030	20170630
22	256292	자강	036790	20170630
23	271431	케이엠에스	038830	20170630
24	154727	에버리소스	020070	20170630
25	246189	제이에스	037110	20170630
26	154204	태창기업	007490	20170630
27	152631	에이치비이에너지	017300	20170630
28	107923	남한제지	001950	20170630
29	358095	코어비트	056850	20170630
30	510215	동북아8호선박투자회사	082110	20170630
31	347619	한국통신데이타	045760	20170630
32	372013	케너텍	062730	20170630
33	353735	다휘	055250	20170630
34	186540	코오롱아이넷	022520	20170630
35	128759	캠브리지코오롱	004620	20170630
36	535588	네오세미테크	089240	20170630
37	264981	디에이치패션	045260	20170630
38	231521	핸디소프트	032380	20170630
39	159908	케이엠에이치	009690	20170630
40	259493	씨엘엘씨디	035710	20170630
41	359641	현대푸드시스템	114410	20170630
42	103325	고제	002540	20170630
43	161639	메리츠종합금융	012420	20170630
44	211271	제넥셀세인	034660	20170630
45	388272	쓰리디월드	065340	20170630
46	264796	스톰이앤에프	043680	20170630
47	134909	소예	035010	20170630
48	236368	엠엔에프씨	048640	20170630
49	684547	하이트맥주	103150	20170630

이렇게 실행하면

제가 실행한 것과 같은 결과를 얻으실 수 있습니다.

 

자세한 사항과 추가 내용은

아래 공식 DART 사이트 개발가이드를 참고하시기 바랍니다!

 

https://opendart.fss.or.kr/guide/main.do?apiGrpCd=DS001 

 

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

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

opendart.fss.or.kr

 

감사합니다.

 

반응형