[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
감사합니다.

반응형