본문 바로가기
python/주식

python - 다트.전자공시 Open API 활용(4), 공시대상회사 조회 - 대화형 콘솔 만들기

by 맑은안개 2020. 3. 7.

전자공시 Open API 활용(3),  공시대상회사 추출 및 가공 에서 추출한 데이터를 활용하여 간단한 대화형 콘솔을 만들어 보고 확장하여 선택한 회사 고유코드로 DART에서 제공하는 API를 호출 해보도록 한다.

 

관련 포스트 시리즈

소스코드는 전 블로그의 소스코드(아래) 에 이어 다음과 같이 구현한다.

import re

 - 정규식으로 문자열을 검색하기 위해 re Library를 Import 한다. python 정규식 사용법은 아래 블로그를 참고한다.

https://youngwonhan-family.tistory.com/1

 

python - re 라이브러리와 정규 표현식( Regular expression )

파이썬은 정규 표현식을 위해 내장 라이브러리 re.py를 제공합니다. 간단한 예제와 함께 re.py 가 제공하는 함수를 살펴보겠습니다. 본 장에서는 정규 표현에 사용되는 메타문자(meta characters)의 기본 사용법은..

youngwonhan-family.tistory.com

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등을 구하여 보여주는 기능등이 있을 것이다.

 

 

반응형