본문 바로가기

[금융]/[Quant]

[Quant] 공공데이터 포털에서 Open-API 이용하기

728x90

쓰던 글이 지워졌...다....

 

< 공공데이터 포털에서 Open-API 승인받기 >

 

 

 

 

공공데이터포털

국가에서 보유하고 있는 다양한 데이터를『공공데이터의 제공 및 이용 활성화에 관한 법률(제11956호)』에 따라 개방하여 국민들이 보다 쉽고 용이하게 공유•활용할 수 있도록 공공데이터(Dataset)와 Open API로 제공하는 사이트입니다.

www.data.go.kr

 

1. 공공데이터 포털에 로그인, 접속

2. 원하는 API 검색

3. 활용 신청 클릭

4. 원하는 서비스 기능 클릭 후, 라이센스 등록

5. 개발계정에 API 사용 등록!

 

< 공공데이터 포털 Open-API 이용하기 >

1. 여기까지 했다면 이제 공공데이터 포털의 open-api를 이용할 수 있다. 먼저 개발계정으로 들어가서 인증키 받기를 클릭한다.

2. 인증키는 이후에 사용하므로 저장해둔다.

3. 사용등록한 API에 접속하면 다음과 같이 요청변수에 원하는 데이터를 담아 보내면 여러가지 형식으로 데이터를 리턴받는 것을 테스트해 볼 수 있다. 필자의 경우는 샘플데이터에 삼성전자와 관련된 데이터를 담았다.

4. 이후 미리보기를 클릭하면 다음과 같은 정보를 확인할 수 있다. 참고로 사파리 브라우저는 에러가 발생했다. 크롬은 정상적인 통신이 되는것을 확인했으므로, 크롬 브라우저를 사용하기 바란다.

5. 다음과 같은 코드를 이용하면 api에 원하는 파라미터를 담은 URL을 만들 수 있다. 이를 request 라이브러리를 통해 통신후, 원하는 포맷으로 받아온 정보를 저장할 수 있다. 

    def get_corp_code(self, name=None):
        """
        한국예탁결제원에서 제공하는 기업코드를 회사명칭으로 검색합니다.
        :param name:str 회사명칭 ex) 삼성전자, 삼성 등
        :return result:dict 회사코드와 명칭을 반환합니다.
        """
        query_params = {"serviceKey":self.api_key,
                        "issucoNm": name,
                        "numOfRows": str(5000)}
        request_url =self.CORP_CODE_URL+"?"
        for k, v in query_params.items():
            request_url = request_url + k + "=" + v +"&"
        print(request_url)
        res = requests.get(request_url[:-1])
        root = ET.fromstring(res.text)
        from_tags = root.iter("items")
        result = {}
        for items in from_tags:
            for item in items.iter('item'):
                if name in item.find('issucoNm').text.split():
                    result["issucoCustno"] = item.find('issucoCustno').text
                    result["issucoNm"] = item.find('issucoNm').text
        return result

6. API 호출 결과 화면

 

728x90