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.'}}}
'Data handling > Web crawling' 카테고리의 다른 글
DevToolsActivePort file doesn't exist error 해결법 (1) | 2021.02.19 |
---|---|
[selenium] js 동적 페이지 크롤링 하기 (주로 댓글) iframe, #document 해결 (0) | 2021.02.12 |
[scrapy] 403 error 발생시 대처법 (0) | 2021.02.09 |
[크롤링] 엄청 쉽고 간단한 크롤링 방법. 꿀팁. 라이브러리 필요 없음 (0) | 2020.09.29 |
[크롤링] beautiful soup에 관하여, 내가 bs를 쓰지 않는 이유 (0) | 2020.06.26 |