본문 바로가기

Data handling/Web crawling

[오픈 Api 이용하기] 금융위원회_기업기본정보 python, 공공 데이터

728x90

https://data.go.kr/tcs/dss/selectApiDataDetailView.do?publicDataPk=15043184

금융위원회_기업기본정보 데이터를 이용하고자 했다.

쉽게 될 줄 알았는데 뭔가 막혀서 삽질을 많이했다.

기록은 남겨둘까 한다.

from urllib.request import urlopen
from urllib.parse import urlencode, unquote, quote_plus
import urllib
import json
from pprint import pprint


url = 'http://apis.data.go.kr/1160100/service/GetCorpBasicInfoService/getCorpOutline'
decode_key = unquote('서비스키')
queryParams = '?' + urlencode({
    quote_plus('pageNo') : '1',
    quote_plus('numOfRows') : '10',
    quote_plus('resultType') : 'json',
    quote_plus('corpNm') : '메리츠자산운용',
    quote_plus('ServiceKey') : decode_key})

print(url + queryParams)
request = Request(url + queryParams)
request.get_method = lambda: 'GET'
response = urlopen(request)
rescode = response.getcode()

if(rescode==200):
    response_body = response.read()
    dict_ = json.loads(response_body.decode('utf-8'))
    pprint(dict_)
else:
    print("Error Code:" + rescode)

서비스키 자체를 encoding해서 준다. 그래서 이를 encoding 한 번 더하려면 decoding 해줘야 한다!

예제 코드 자체도 python2 버전이라 그런지 수정할 부분이 많았다.

또 quote_plus('basDt') : '20200423’ 이게 들어가면 작동이 안됐다.

따라서 위의 데이터를 뻈고, 결과는 잘 나왔다!

실행 결과

{'response': {'body': {'items': {'item': [{'actnAudpnNm': '',
                                           'audtRptOpnnCtt': '',
                                           'basDt': '20200509',
                                           'bzno': '1078708658',
                                           'corpDcd': '',
                                           'corpDcdNm': '',
                                           'corpEnsnNm': 'Meritz Asset '
                                                         'Management',
                                           'corpNm': '메리츠자산운용',
                                           'corpRegMrktDcd': 'E',
                                           'corpRegMrktDcdNm': '기타',
                                           'crno': '1101113892240',
                                           'empeAvgCnwkTermCtt': '',
                                           'enpBsadr': '서울특별시 종로구 북촌로 104 계동빌딩',
                                           'enpDtadr': '서울특별시 종로구 북촌로 104 계동빌딩',
                                           'enpEmpeCnt': '0',
                                           'enpEstbDt': '20080506',
                                           'enpFxno': '02-6320-3009',
                                           'enpHmpgUrl': '',
                                           'enpKosdaqLstgAbolDt': '',
                                           'enpKosdaqLstgDt': '',
                                           'enpKrxLstgAbolDt': '',
                                           'enpKrxLstgDt': '',
                                           'enpMainBizNm': '',
                                           'enpMntrBnkNm': '',
                                           'enpOzpno': '03051',
                                           'enpPbanCmpyNm': '메리츠자산운용',
                                           'enpPn1AvgSlryAmt': '0',
                                           'enpRprFnm': 'John Lee(이정복)',
                                           'enpStacMm': '12',
                                           'enpTlno': '02-6320-3000',
                                           'enpXchgLstgAbolDt': '',
                                           'enpXchgLstgDt': '',
                                           'fssCorpChgDtm': '2020/03/23',
                                           'fssCorpUnqNo': '00685935',
                                           'sicNm': '64201',
                                           'smenpYn': ''},
                                          {'actnAudpnNm': '',
                                           'audtRptOpnnCtt': '',
                                           'basDt': '20200622',
                                           'bzno': '1078708658',
                                           'corpDcd': '',
                                           'corpDcdNm': '',
                                           'corpEnsnNm': 'Meritz Asset '
                                                         'Management',
                                           'corpNm': '메리츠자산운용',
                                           'corpRegMrktDcd': 'E',
                                           'corpRegMrktDcdNm': '기타',
                                           'crno': '1101113892240',
                                           'empeAvgCnwkTermCtt': '',
                                           'enpBsadr': '서울특별시 종로구 북촌로 104 계동빌딩',
                                           'enpDtadr': '서울특별시 종로구 북촌로 104 계동빌딩',
                                           'enpEmpeCnt': '0',
                                           'enpEstbDt': '20080506',
                                           'enpFxno': '02-6320-3009',
                                           'enpHmpgUrl': '',
                                           'enpKosdaqLstgAbolDt': '',
                                           'enpKosdaqLstgDt': '',
                                           'enpKrxLstgAbolDt': '',
                                           'enpKrxLstgDt': '',
                                           'enpMainBizNm': '',
                                           'enpMntrBnkNm': '',
                                           'enpOzpno': '03051',
                                           'enpPbanCmpyNm': '메리츠자산운용',
                                           'enpPn1AvgSlryAmt': '0',
                                           'enpRprFnm': 'John Lee(이정복)',
                                           'enpStacMm': '12',
                                           'enpTlno': '02-6320-3000',
                                           'enpXchgLstgAbolDt': '',
                                           'enpXchgLstgDt': '',
                                           'fssCorpChgDtm': '2020/03/23',
                                           'fssCorpUnqNo': '00685935',
                                           'sicNm': '64201',
                                           'smenpYn': ''},
                                          {'actnAudpnNm': '',
                                           'audtRptOpnnCtt': '',
                                           'basDt': '20200627',
                                           'bzno': '1078708658',
                                           'corpDcd': '',
                                           'corpDcdNm': '',
                                           'corpEnsnNm': 'Meritz Asset '
                                                         'Management',
                                           'corpNm': '메리츠자산운용',
                                           'corpRegMrktDcd': 'E',
                                           'corpRegMrktDcdNm': '기타',
                                           'crno': '1101113892240',
                                           'empeAvgCnwkTermCtt': '',
                                           'enpBsadr': '서울특별시 종로구 북촌로 104 계동빌딩',
                                           'enpDtadr': '서울특별시 종로구 북촌로 104 계동빌딩',
                                           'enpEmpeCnt': '0',
                                           'enpEstbDt': '20080506',
                                           'enpFxno': '02-6320-3009',
                                           'enpHmpgUrl': '',
                                           'enpKosdaqLstgAbolDt': '',
                                           'enpKosdaqLstgDt': '',
                                           'enpKrxLstgAbolDt': '',
                                           'enpKrxLstgDt': '',
                                           'enpMainBizNm': '',
                                           'enpMntrBnkNm': '',
                                           'enpOzpno': '03051',
                                           'enpPbanCmpyNm': '메리츠자산운용',
                                           'enpPn1AvgSlryAmt': '0',
                                           'enpRprFnm': 'John Lee(이정복)',
                                           'enpStacMm': '12',
                                           'enpTlno': '02-6320-3000',
                                           'enpXchgLstgAbolDt': '',
                                           'enpXchgLstgDt': '',
                                           'fssCorpChgDtm': '2020/03/23',
                                           'fssCorpUnqNo': '00685935',
                                           'sicNm': '64201',
                                           'smenpYn': ''},
                                          {'actnAudpnNm': '',
                                           'audtRptOpnnCtt': '',
                                           'basDt': '20200629',
                                           'bzno': '1078708658',
                                           'corpDcd': '',
                                           'corpDcdNm': '',
                                           'corpEnsnNm': 'Meritz Asset '
                                                         'Management',
                                           'corpNm': '메리츠자산운용',
                                           'corpRegMrktDcd': 'E',
                                           'corpRegMrktDcdNm': '기타',
                                           'crno': '1101113892240',
                                           'empeAvgCnwkTermCtt': '',
                                           'enpBsadr': '서울특별시 종로구 북촌로 104 계동빌딩',
                                           'enpDtadr': '서울특별시 종로구 북촌로 104 계동빌딩',
                                           'enpEmpeCnt': '0',
                                           'enpEstbDt': '20080506',
                                           'enpFxno': '02-6320-3009',
                                           'enpHmpgUrl': '',
                                           'enpKosdaqLstgAbolDt': '',
                                           'enpKosdaqLstgDt': '',
                                           'enpKrxLstgAbolDt': '',
                                           'enpKrxLstgDt': '',
                                           'enpMainBizNm': '',
                                           'enpMntrBnkNm': '',
                                           'enpOzpno': '03051',
                                           'enpPbanCmpyNm': '메리츠자산운용',
                                           'enpPn1AvgSlryAmt': '0',
                                           'enpRprFnm': 'John Lee(이정복)',
                                           'enpStacMm': '12',
                                           'enpTlno': '02-6320-3000',
                                           'enpXchgLstgAbolDt': '',
                                           'enpXchgLstgDt': '',
                                           'fssCorpChgDtm': '2020/03/23',
                                           'fssCorpUnqNo': '00685935',
                                           'sicNm': '64201',
                                           'smenpYn': ''}]},
                       'numOfRows': 10,
                       'pageNo': 1,
                       'totalCount': 4},
              'header': {'resultCode': '00', 'resultMsg': 'NORMAL SERVICE.'}}}