가.공공 api 활용


1. 참조 api url

과학기술정보통신부 우정사업본부_도로명주소조회서비스

2. 질의 내용

공공 api(도로명 주소)관련 key 인증에러

3. 코드 작성 의도

http://openapi.epost.go.kr/postal/retrieveNewAdressAreaCdService/retrieveNewAdressAreaCdService/getNewAddressListAreaCd?ServiceKey={**발급받은키(decode)**}&searchSe=road&srchwrd=세종로 17

#발급받은 키 : 공유해도되나 싶어서, 일단 '발급받은키(decode)' 로 임시 표시했습니다.

4. 에러 코드 : SERVICE KEY IS NOT REGISTERED ERROR.

나.실습코드


실습1)

코드([강의자료] 17_20차수.pdf)

###test01 <- 강의 교재참조 

import requests

#요청주소
req_url ='<http://openapi.epost.go.kr/postal/retrieveNewAdressAreaCdService/retrieveNewAdressAreaCdService/getNewAddressListAreaCd>'

#발급받은키
API_KEY_decode='**일반 인증키 (Decoding) 값 복붙**' # 디코딩
search_Se= 'dong',    # 검색구분(dong:동(읍/면)명, road :도로명[default], post:우편번호)
srch_wrd= '세종로 17' # 도로명

req_parameter = {"ServiceKey":API_KEY_decode, "searchSe":search_Se, "srchwrd":srch_wrd}

r = requests.get(req_url, params = req_parameter)
xml_data = r.text
print(xml_data)

결과

<?xml version="1.0" encoding="UTF-8" standalone="yes"?><NewAddressListResponse><cmmMsgHeader><requestMsgId></requestMsgId><responseMsgId></responseMsgId><responseTime>20210622:121930357</responseTime><successYN>N</successYN><returnCode>30</returnCode><errMsg>SERVICE KEY IS NOT REGISTERED ERROR.</errMsg></cmmMsgHeader></NewAddressListResponse>

실습2)

코드(참조 블로그)

###test02 <- 인터넷 검색에서 참조

import requests
from bs4 import BeautifulSoup
from urllib.parse import urlencode, quote_plus, unquote 

#요청주소
xmlUrl ='<http://openapi.epost.go.kr/postal/retrieveNewAdressAreaCdService/retrieveNewAdressAreaCdService/getNewAddressListAreaCd>'

#발급받은키
#my_en_key=unquote('**일반 인증키(Decoding)**')`# 인코딩
my_de_key='**일반 인증키 (Decoding) 값 복붙**' # 디코딩

queryParams = '?' + urlencode(  
    {
        quote_plus('ServiceKey') : my_de_key,  # 발급 받은키
        quote_plus('searchSe') : 'dong',    # 검색구분(dong:동(읍/면)명, road :도로명[default], post:우편번호)
        quote_plus('srchwrd') : '세종로 17' # 도로명
     }
)
queryParams
response = requests.get(xmlUrl + queryParams).text.encode('utf-8')
response

xmlobj = BeautifulSoup(response, 'xml')
xmlobj

결과

<?xml version="1.0" encoding="utf-8"?> <NewAddressListResponse><cmmMsgHeader><requestMsgId/><responseMsgId/><responseTime>20210622:121855937</responseTime><successYN>N</successYN><returnCode>30</returnCode><errMsg>SERVICE KEY IS NOT REGISTERED ERROR.</errMsg></cmmMsgHeader></NewAddressListResponse>

해결


시간이 약?