본문 바로가기

개발/주식 ( Python )

Dart API를 이용하여 상세 정보 가져오기

2023.12.26 - [개발/주식 ( Python )] - Dart API를 이용하여 회사 정보 가져오기

 

Dart API를 이용하여 회사 정보 가져오기

1. Dart 회원가입 - https://opendart.fss.or.kr/uat/uia/egovLoginUsr.do - 인증키 신청으로 회원 가입 후 API KEY를 발급 받을 수 있다 - 발급 받은 API는 "마이페이지/오픈API 이용현황"에서 확인 가능하다 2. 회사 정

stupiddev.tistory.com

 

1. 회사 상세 정보 가져오기

    #저장된 회사정보에서 상세 리스트 가져오기
    def getCompanyInfoData(self):
    	dartKey = ""
        corpInfo = "https://opendart.fss.or.kr/api/company.json"
    	# Dart API를 이용하여 나온 데이터 SELECT
        # 회사 정보는 https://stupiddev.tistory.com/10 참조 해주세요.
        param = {}
        compnayDataList = dbInfo.select("selectCompanyList", param)
        try :
            i = 0
            for compnayData in compnayDataList:
                i = i + 1
                
                # dartKey : Dart API Key 
                # corp_code : Dart에 설정된 회사 코드
                reqParam = "?crtfc_key=" + dartKey + "&corp_code=" + compnayData[0]
                res = requests.get(corpInfo + reqParam)
                if res.ok :
                    jData = json.loads(res.text)
                    
                    # status : 000 - API가 정상일 경우 상세 데이터 UPDATE
                    if jData["status"] == "000" :
                    
                    	# UPDATE를 위한 데이터 변수
                        param = {}
                        param["comCd"] = jData["corp_code"].replace(' ', '')
                        param["comEngNm"] = jData["corp_name_eng"]
                        #param["stockCd"] = jData["stock_code"].replace(' ', '')
                        param["stockNm"] = jData["stock_name"].replace(' ', '')
                        param["ceoNm"] = jData["ceo_nm"].replace(' ', '')

                        param["comCls"] = jData["corp_cls"].replace(' ', '')
                        param["jurirNo"] = jData["jurir_no"].replace(' ', '')
                        param["bizrNo"] = jData["bizr_no"].replace(' ', '')
                        param["comAdres"] = jData["adres"]
                        param["comUrl"] = jData["hm_url"].replace(' ', '')

                        param["irUrl"] = jData["ir_url"].replace(' ', '')
                        param["comPhnNo"] = jData["phn_no"].replace(' ', '')
                        param["comFaxNo"] = jData["fax_no"].replace(' ', '')
                        param["indutyCode"] = jData["induty_code"].replace(' ', '')
                        if jData["acc_mt"] == "" :
                            param["comAccMt"] = 0
                        else :
                            param["comAccMt"] = jData["acc_mt"].replace(' ', '')
                        param["updId"] = "batch"
                        param["updDt"] = "SYSDATE"

						# WHERE 문 생성을 위한 변수
                        wParam = {}
                        wParam["comCd"] = jData["corp_code"].replace(' ', '')

                        dbInfo.update("TB_STOCK_COMP", param, wParam)

                        print(wParam)

        except Exception as e:
            print(e)
            # 트래픽문제로 에러 발생으로 인한 wait 추가
            time.sleep(1)
            
            # 재귀함수 재 호출
            self.getCompanyInfoData()

 

※ API 호출 결과 값 

    - jData = {'status': '000', 'message': '정상', 'corp_code': '', 'corp_name': '', 'corp_name_eng': 'PS Capital Partners', 'stock_name': '', 'stock_code': '', 'ceo_nm': '', 'corp_cls': 'E', 'jurir_no': '', 'bizr_no': '', 'adres': '', 'hm_url': '', 'ir_url': '', 'phn_no': '', 'fax_no': '', 'induty_code': '649', 'est_dt': '20171101', 'acc_mt': '12'}

 

※ 장.단점

- 장점 : API 개발이 편하다

- 단점 : 하루 호출 개수가 정해져 있어 무료로 사용시 전부 데이터 업데이트 할 경우 3~4일이 소요된다

 

 

 

'개발 > 주식 ( Python )' 카테고리의 다른 글

Dart API를 이용하여 회사 정보 가져오기  (0) 2023.12.26