본문 바로가기

API

[전자공시 Dart API] 5% 대량보유 상황보고 회사리스트 수집

반응형

전자공시 Dart API의 개발가이드 > 지분공시 종합정보 > 대량보유 상황보고 데이터를 가져와 보겠습니다.

본인의  인증키(API Key)가 필요하니 필요하신분은 1번을 참조 부탁드립니다.

 

1. 가입 및 인증키 확인(Skip 가능)

2. 공시정보 공시검색에서 무상증자 회사 리스트확인(Skip 가능)

3. 대량보유 상황보고 회사 알아보기

 

1. 가입 및 인증키 확인(Skip 가능)

https://yenpa.tistory.com/23

 

[전자공시 Dart API] 가입 및 인증키(API Key) 확인하기

1. 사이트 가입 2. 인증키(API Key) 확인하기 1. 사이트 가입 사이트에 접속합니다. https://opendart.fss.or.kr/ 시스템 점검으로 모든 서비스 이용이 일시적으로 중단되어니 양해 부탁드립니다. 시스템 점

yenpa.tistory.com

 

2. 공시정보 공시검색에서 무상증자 회사 리스트확인(Skip 가능)

https://yenpa.tistory.com/24

 

[전자공시 Dart API] 공시정보 공시검색에서 무상증자 회사 리스트확인

전자공시 Dart API의 개발가이드 > 공시정보 > 공시검색 데이터를 가져와 보겠습니다. 본인의 인증키(API Key)가 필요하니 필요하신분은 아래를 참고 부탁드립니다. 1. 가입 및 인증키 확인(Skip 가능)

yenpa.tistory.com

 

3. 대량보유 상황보고 회사 알아보기

공시 리스트에서 대량보유 상황보고 정보를 가져오겠습니다.

위의 2번의 코드를 활용할 예정이니 필요하신분은 참조 부탁드립니다.

 

요청 URL은 json형식을 사용하겠습니다.

필수 요청 인자(Parameter)는 crtfc_key (본인의 API Key), corp_code(회사 고유번호) 입니다.

 

필수 요청인자로 대량보유 상황보고 데이터를 가져와 보겠습니다.

회사 고유번호는 삼성전자를 이용하겠습니다.

import requests
#crtfc_key='YOUR_APIKEY'

corp_code='00126380'
url = 'https://opendart.fss.or.kr/api/majorstock.json'
params = {
    'crtfc_key': crtfc_key,
    'corp_code' : corp_code,
}

requests.get(url, params=params).json()

결과들이 정상적으로 나오는 것을 확인할수 있습니다.

그럼 2022년 9월1일부터 9월30일 사이의 대량보고 상황보고서의 공시 정보를 확인해보겠습니다.

아래는 공시정보 > 공시검색 데이터를 가져오는 코드입니다.

import requests
import pandas as pd
from IPython.display import display
#crtfc_key='YOUR_APIKEY'

page_no=1
page_count=100
bgn_de='20220901'
end_de='20220930'

results_all=pd.DataFrame()
while(True):
    url = 'https://opendart.fss.or.kr/api/list.json'
    params = {
        'crtfc_key': crtfc_key,
        'page_no' : str(page_no),
        'page_count' : str(page_count),
        'bgn_de' : bgn_de,
        'end_de' : end_de,
    }
    
    #결과를 json형태로 저장
    results = requests.get(url, params=params).json()
    #결과중 실제 공시정보가 있는부분만 DataFrame으로 저장
    results_df = pd.DataFrame(results['list'])
    #하나의 DataFrame으로 만듬
    results_all = pd.concat([results_all,results_df])
    
    total_page=results['total_page']
    
    # total_page와 page_no이 같으면 while문 종료
    if page_no==total_page:
        break
    
    page_no=page_no+1

공시정보중 대량보유의 keyword를 포함한 리스트를 확인하면

9월 한달간 675개가 공시된 것을 알수있습니다.

keyword='대량보유'
print(results_all.shape)
results_all.loc[results_all['report_nm'].str.contains(keyword)]

 

 

반응형

 

 

 

상위 20개만 그래프로 확인해 보겠습니다.

import matplotlib.pyplot as plt
from IPython.display import display
plt.rc('font', family='NanumGothic') 

result_5percent['corp_name'].value_counts().head(20).plot(kind='bar', 
        figsize=(8,4), title="5% 대량보유 상황보고 top20")

9월에는 아래의 회사들의 대량보유 상황보고 공시가 많았습니다.

 

선택 회사의 상세 내용을 살펴보겠습니다.

# 대량보유 상황보고 상세정보 확인
def majorstock(corp_code):
    
    url = 'https://opendart.fss.or.kr/api/majorstock.json'
    params = {
        'crtfc_key': crtfc_key,
        'corp_code' : corp_code,
    }

    result=requests.get(url, params=params).json()
    df=pd.DataFrame(result['list'])
    
    return df

majorstock('00541437') #코렌텍

9월에만 8번의 공시가 있었던 코렌텍의 상세를 보겠습니다.

2020년 12월부터 많은 공시가 있는것이 확인됩니다. 

2021년 3월이후에도 더 있지만 포스팅에서는 생략합니다.

홈페이지에 있는 각 column별 상세입니다.

 

참고로 위의 DataTable의 rcept_no 의 번호를 아래의 URL에 넣어 크롬, 익스플로러 등의 주소에 넣고

이동하시면 웹에서의 상세확인도 가능합니다.

https://dart.fss.or.kr/dsaf001/main.do?rcpNo=rcept_no

ex) https://dart.fss.or.kr/dsaf001/main.do?rcpNo=20201209000193

 

이상으로 전자공시 Dart API의 개발가이드 > 지분공시 종합정보 > 대량보유 상황보고 데이터를 확인해봤습니다.

반응형