전자공시 Open API 활용(3), 공시대상회사 추출 및 가공 에서 추출한 데이터를 활용하여 간단한 대화형 콘솔을 만들어 보고 확장하여 선택한 회사 고유코드로 DART에서 제공하는 API를 호출 해보도록 한다.
관련 포스트 시리즈
- python - 다트.전자공시 Open API 활용(1), 전체 상장사(고유코드) 조회 - HTTP로 얻은 Stream zip파일 읽기
- python - 다트.전자공시 Open API 활용(2), 기업개황 응답데이터 JSON 핸들링( JSON 기초 )
- python - 다트.전자공시 Open API 활용(3), 공시대상회사 추출 및 가공 ( xml to dict - xmltodict library)
- 전자공시 Open API 활용(5), 기업 재무제표 조회 API ( 분기/반기/사업보고서 - 재무상태표, 손익계산서 )
- 전자공시 Open API 활용(6), pandas 기초 - 재무제표 json 데이터를 pandas DataFrame으로 변환
소스코드는 전 블로그의 소스코드(아래) 에 이어 다음과 같이 구현한다.
import re
- 정규식으로 문자열을 검색하기 위해 re Library를 Import 한다. python 정규식 사용법은 아래 블로그를 참고한다.
https://youngwonhan-family.tistory.com/1
corp_list_has_stockcode = [x for x in corp_list if x['stock_code'] is not None]
while(True):
data_keyin = input('회사명을 입력하세요(종료하려면 exit 입력):')
# 대소문자 구분 없이 조회한다. re.IGNORECASE 는 re.I와 동일한 표현이다.
p = re.compile(r'.*({}).*'.format(data_keyin), re.IGNORECASE)
# 'exit'가 입력되면 대화형 콘솔을 종료한다.
if data_keyin == 'exit':
break
print('{}을 검색한 결과는 아래와 같습니다.'.format(data_keyin))
print('=' * 100)
for x in corp_list_has_stockcode:
# 정규식 매칭
data = re.search(p, x['corp_name'])
if data:
result = data.group()
print('회사명:{}, 고유코드:{}, 종목코드:{}'.format(result, x['corp_code'], x['stock_code']))
print('=' * 100)
- WHILE 문을 반복하고 'exit' 라는 값이 입력되면 빠져나간다.
- 반복구문안에서 정규식 표현을 하는경우 compile로 pattern을 선언하여 자원을 재활용한다.
OUTPUT
회사명을 입력하세요(종료하려면 exit 입력):lg
lg을 검색한 결과는 아래와 같습니다.
====================================================================================================
회사명:LG파워콤, 고유코드:00318617, 종목코드:045820
회사명:LG마이크론, 고유코드:00105767, 종목코드:016990
회사명:LG석유화학, 고유코드:00120100, 종목코드:012990
회사명:LG생명과학, 고유코드:00423609, 종목코드:068870
회사명:LG생활건강, 고유코드:00356370, 종목코드:051900
회사명:LG디스플레이, 고유코드:00105873, 종목코드:034220
회사명:LG유플러스, 고유코드:00231363, 종목코드:032640
회사명:LG하우시스, 고유코드:00759513, 종목코드:108670
회사명:LG화학, 고유코드:00356361, 종목코드:051910
회사명:LG, 고유코드:00120021, 종목코드:003550
회사명:LG전자, 고유코드:00401731, 종목코드:066570
회사명:LG상사, 고유코드:00120076, 종목코드:001120
회사명:LG헬로비전, 고유코드:00222532, 종목코드:037560
회사명:LG이노텍, 고유코드:00105961, 종목코드:011070
====================================================================================================
회사명을 입력하세요(종료하려면 exit 입력):반도체
반도체을 검색한 결과는 아래와 같습니다.
====================================================================================================
회사명:인터피온반도체, 고유코드:00111591, 종목코드:014010
회사명:엠텍반도체, 고유코드:00356644, 종목코드:054440
회사명:어보브반도체, 고유코드:00591441, 종목코드:102120
회사명:한미반도체, 고유코드:00161383, 종목코드:042700
회사명:서울반도체, 고유코드:00130763, 종목코드:046890
회사명:SFA반도체, 고유코드:00301246, 종목코드:036540
회사명:제주반도체, 고유코드:00447487, 종목코드:080220
회사명:아이티엠반도체, 고유코드:00579980, 종목코드:084850
====================================================================================================
회사명을 입력하세요(종료하려면 exit 입력):
대화형 콘솔이 완성되었다. 막연히 API를 호출하고 결과를 확인할때와는 다른 재미가 있다.
콘솔에 많은 기능을 추가 할 수 있다. 가령 조회한 상장회사의 재무재표를 간단하게는 pickle 혹은 DB로 저장하여 보관할 수 있고 기업가치 판단에 주요지표로 ROE, PER등을 구하여 보여주는 기능등이 있을 것이다.
반응형