전자공시(Open DART) 재무제표 크롤링 2 : Python
지난 "전자공시(Open DART) 재무제표 크롤링: Python"에서 기업고유번호, 단일회사 및 다중회사 주요계정, 단일회사 전체 재무제표를 받아오는 코드를 간단히 만들어봤습니다.
오늘은 간단히 다음 2가지 사항을 가져오는 코드를 남깁니다.
- 공시검색
- 기업개황
공시검색은 이전과 마찮가지로 요청한 것에 대한 응답을 pandas 데이터프레임으로 반환하는 함수로 만들겁니다. 기업개황은 딱히 어디다 써야하는지 감이 오지 않아서 우선 그냥 딕셔너리로 반환하게끔 하였습니다.
공시검색
공시검색에 대한 설명은 "공시검색 개발가이드"에 잘 나와있습니다. 아래 표를 보시면 아시겠지만 인증키 외에는 필수적인 값이 아닙니다. 그냥 필요에 따라 넣어야 하는 것이지요.
키 | 명칭 | 타입 | 필수 여부 |
값 설명 |
crtfc_key | API 인증키 | STRING(40) | Y | 발급받은 인증키(40자리) |
corp_code | 고유번호 | STRING(8) | N | 공시대상회사의 고유번호(8자리) |
bgn_de | 시작일 | STRING(8) | N | 검색시작 접수일자(YYYYMMDD) : 없으면 종료일(end_de) 고유번호(corp_code)가 없는 경우 검색기간은 3개월로 제한 |
end_de | 종료일 | STRING(8) | N | 검색종료 접수일자(YYYYMMDD) : 없으면 당일 |
last_reprt_at |
최종보고서 |
STRING(1) | N | 최종보고서만 검색여부(Y or N) 기본값 : N (정정이 있는 경우 최종정정만 검색) |
pblntf_ty | 공시유형 | STRING(1) | N | |
pblntf_detail_ty | 공시상세유형 | STRING(4) | N | |
corp_cls | 법인구분 | STRING(1) | N | 법인구분 : Y(유가), K(코스닥), N(코넥스), E(기타) ※ 없으면 전체조회, 복수조건 불가 |
sort | 정렬 | STRING(4) | N | 접수일자: date 회사명 : crp 보고서명 : rpt 기본값 : date |
sort_mth | 정렬방법 | STRING(4) | N | 오름차순(asc), 내림차순(desc) 기본값 : desc |
page_no | 페이지 번호 | STRING(5) | N | 페이지 번호(1~n) 기본값 : 1 |
page_count | 페이지 별 건수 | STRING(3) | N | 페이지당 건수(1~100) 기본값 : 10, 최대값 : 100 |
코드를 간단히 하려다보니 기존 "전자공시(Open DART) 재무제표 크롤링: Python"에서 만들었던 convertFnltt() 함수를 이용하였습니다. 해당 코드는 바로 윗줄 링크에서 확인하시면 됩니다.
def get_list(crtfc_key,**kwargs):
"""
공시정보 조회
"""
keys = ['corp_code','bgn_de','end_de','last_reprt_at','pblntf_ty',
'pblntf_detail_ty','corp_cls''sort','sort_mth','page_no','page_count']
for key in kwargs.keys():
if not key in keys:
print("get_list() has no parameter \'"+key+"\'")
return False
params = {**{'crtfc_key':crtfc_key},**kwargs}
items = ['corp_cls','corp_name','corp_code','stock_code','report_nm',
'rcept_no','flr_nm','rcept_dt','rm']
item_names = ['법인구분','종목명','고유번호','종목코드','보고서명','접수번호',
'공시제출인명','접수일자','비고']
url = "https://opendart.fss.or.kr/api/list.json"
return convertFnltt(url,items,item_names,params)
테스트를 해보니까 함수를 쓸때에는 page_no="100"으로 넣어두는게 편할 것 같네요. 이 함수를 이용해서 조만간 관심 종목에 대한 공시정보를 주기적으로 확인하여, 메신져로 알림을 주는 코드를 만들어 볼 생각입니다.
기업개황
기업개황은 실은 어디다 써야할 지 모르겠습니다. 우선 간단하게 코드를 만들어봤기에 올립니다. 이건 데이터프레임이 아닌 딕셔너리로 반환합니다.
def get_company(crtfc_key,corp_code):
params = {'crtfc_key':crtfc_key,'corp_code':corp_code}
url = "https://opendart.fss.or.kr/api/company.json"
res = requests.get(url,params=params)
json_dict = json.loads(res.text)
del json_dict['status']; del json_dict['message']
return json_dict
"기업개황 개발가이드"을 보시면 아시겠지만, 많이 궁금해 할 만한 정보가 있을까 싶습니다. 뭔가 구미에 당길만한 정보라면 나중에 메신저 채팅봇을 만들때 써먹을까 싶었는데, 고민 좀 해봐야겠네요..
'금융 & 부동산 > 주식' 카테고리의 다른 글
코스닥시장: 소속부 (0) | 2020.05.24 |
---|---|
파이썬 텔레그램 봇(telegram bot) 만들기: 전자공시 (Open DART) (1) | 2020.05.16 |
전자공시(Open DART) 재무제표 크롤링 : Python (6) | 2020.05.03 |
전자공시(Open DART) 재무제표 크롤링 05:: 다중회사 주요계정 (Julia) (0) | 2020.04.25 |
전자공시(Open DART) 재무제표 크롤링 04:: 단일회사 주요계정 (Julia) (0) | 2020.04.25 |