1) Dart OpenAPI 를 활용하기
👉 OpenAPI 란? - 데이터를 가져다 쓸 수 있게 서버의 ‘창구’를 열어둔 것!
⇒ Dart Open API를 활용하면 공시 정보를 ‘데이터 분석’에 활용할 수 있어요.
⇒ 이제 일일이 공시자료를 보러가지 않아도, 분석을 할 수 있답니다!
⇒ 게다가, 이 모든 것을 쉽게 활용할 수 있게 만든 ‘라이브러리’까지. 🙂
2) 상장, 비상장 종목을 분석하기
👉 Dart에서 제공하는 자료들을 이용하여 종목을 분석합니다!
⇒ 최대 주주 지분율 변동이 큰 회사는?
⇒ 이익잉여금이 크게 상승한 회사는?
1) API는 무엇이고, 키는 왜 발급 받아야 할까?
👉 API란? - 서버에 접근하는 ‘창구’와 같은 것
은행에도 여러가지 데이터가 있지만, 우리는 ‘창구’를 활용해서 정해진 약속으로 정해진 데이터만 접근 할 수 있어요.
⇒ 예) 입출금창구에 가서 주민등록증을 보여줘야 → 잔고를 확인할 수 있죠
그럼 ‘키’는 왜 발급받아야 하나?
⇒ 누구에게나 열어둔 ‘창구’이기 때문에, 너무 많은 요청이 오면 서버가 매우 힘들겠죠!
⇒ 그래서 인 당 할당량을 정해서 ‘key’를 발급하는 것이랍니다. 요청할 때 이 것이 늘 필요하죠.
2) 발급받기
[코드스니펫] Dart OpenAPI 키 발급
https://opendart.fss.or.kr/uat/uia/egovLoginUsr.do
⇒ 인증키 신청을 누르고 정보를 입력하면, 누구나 쉽게 키를 발급 받을 수 있습니다.
⇒ API 사용 환경은 ‘웹, 앱 모두’로 해주시고, 사용용도는 ‘개인 공부’라고 적어주세요
⇒ OpenAPI 이용현황 에 가면, 키를 볼 수 있습니다.
⇒ 크롬 탭을 끄지 마세요! 바로 다음 강의에서 이 것을 복사, 붙여넣기 하셔야 합니다.
[코드스니펫] API 키 입력하기
```python
import dart_fss as dart_fss
import pandas as pd
api_key = '여기에 API 키를 입력'
dart_fss.set_api_key(api_key=api_key)
corp_list = dart_fss.get_corp_list()
corp_list.corps
```
import dart_fss as dart_fss
import pandas as pd
api_key = '여기에 API 키를 입력'
dart_fss.set_api_key(api_key=api_key)
corp_list = dart_fss.get_corp_list()
corp_list.corps
all = dart_fss.api.filings.get_corp_code()
all[0] ⇒ 이렇게 DataFrame 형태로 볼 수도 있습니다.df = pd.DataFrame(all)
df ⇒ stock_code 가 있는 종목은 상장사, 없는 종목은 비상장사를 의미합니다.df_listed = df[df['stock_code'].notnull()]df_non_listed = df[df['stock_code'].isnull()].to_excel('파일명.xlsx') 만 붙이면 엑셀로 만들어준답니다. 판다스의 힘!df_listed.to_excel('비상장사.xlsx')
df_non_listed.to_excel('상장사.xlsx')corp_code = df_listed[df_listed['corp_name'] == '삼성전자'].iloc[0,0]
corp_code기업 정보
corp_code = df_listed[df_listed['corp_name'] == '카카오'].iloc[0,0]
dart_fss.api.filings.get_corp_info(corp_code)
미등기임원 보수 총액
✅ Dart Openpi 사이트를 열어두고 하면 편하답니다!⇒ 이렇게 해두면 dart_fss.api... 부분만 변경하면 되겠죠!
corp_code = df_listed[df_listed['corp_name'] == '카카오'].iloc[0,0]
data = dart_fss.api.info.unrst_exctv_mendng_sttus(corp_code, '2021', '11011')
pd.DataFrame(data['list'])
증자(감자)현황
corp_code = df_listed[df_listed['corp_name'] == '카카오'].iloc[0,0]
data = dart_fss.api.info.irds_sttus(corp_code, '2021', '11011')
pd.DataFrame(data['list'])
배당 현황
⇒ dart 에서 해당 내용을 찾아볼까요? (링크)
corp_code = df_listed[df_listed['corp_name'] == '카카오'].iloc[0,0]
data = dart_fss.api.info.alot_matter(corp_code, '2021', '11011')
pd.DataFrame(data['list'])
최대주주 현황
⇒ 최대주주 중 몇 명이 주식을 샀는지 / 팔았는지도 알 수 있겠군요!
corp_code = df_listed[df_listed['corp_name'] == '카카오'].iloc[0,0]
data = dart_fss.api.info.hyslr_sttus(corp_code, '2021', '11011')
pd.DataFrame(data['list'])
임원 사항
corp_code = df_listed[df_listed['corp_name'] == '카카오'].iloc[0,0]
data = dart_fss.api.info.exctv_sttus(corp_code, '2021', '11011')
pd.DataFrame(data['list'])
직원 현황
⇒ 남녀 평균 급여도 볼 수 있네요!
corp_code = df_listed[df_listed['corp_name'] == '카카오'].iloc[0,0]
data = dart_fss.api.info.emp_sttus(corp_code, '2021', '11011')
pd.DataFrame(data['list'])
이사 보수
corp_code = df_listed[df_listed['corp_name'] == '카카오'].iloc[0,0]
data = dart_fss.api.info.hmv_audit_indvdl_by_sttus(corp_code, '2021', '11011')
pd.DataFrame(data['list'])
연봉 top 5
corp_code = df_listed[df_listed['corp_name'] == '카카오'].iloc[0,0]
data = dart_fss.api.info.indvdl_by_pay(corp_code, '2021', '11011')
pd.DataFrame(data['list'])
타법인 출자 현황
corp_code = df_listed[df_listed['corp_name'] == '카카오'].iloc[0,0]
data = dart_fss.api.info.otr_cpr_invstmnt_sttus(corp_code, '2021', '11011')
pd.DataFrame(data['list'])
corp_code = df_listed[df_listed['corp_name'] == '카카오'].iloc[0,0]
data = dart_fss.api.finance.fnltt_singl_acnt(corp_code, '2021', '11011')
pd.DataFrame(data['list']) ⇒ 이렇게 하면 모든 항목을 볼 수 있답니다.corp_code = df_listed[df_listed['corp_name'] == '카카오'].iloc[0,0]
data = dart_fss.api.finance.fnltt_singl_acnt_all(corp_code, '2021', '11011', 'CFS')
pd.DataFrame(data['list'])corp_code = df_listed[df_listed['corp_name'] == '카카오'].iloc[0,0]
data = dart_fss.api.shareholder.elestock(corp_code)
pd.DataFrame(data['list']) ⇒ 특정 사람에 대해서만 볼까요?corp_code = df_listed[df_listed['corp_name'] == '카카오'].iloc[0,0]
data = dart_fss.api.shareholder.elestock(corp_code)
df_temp = pd.DataFrame(data['list'])
df_temp[df_temp['repror'] == '김범수']