공공데이터포털에서 데이터 가져올때 SERVICE KEY IS NOT REGISTERED ERROR 가 발생한다면 두가지 이유다 첫번째는 포털사이트에서 미등록시 (1시간 정도 소요된다고 가이드를 준다.) 두번째는 인코딩 문제이다. 인코딩 문제를 해결하는 방법에 대해서 설명한다.
SERVICE_KEY를 받으면 unsafe characters인 %가 포함되어 있다. 우리는 항상 URL에서는 인코딩된 결과를 보기 때문에 자연스럽게 내가 파라미터에 넣어도 잘~ 동작하겠지 생각하지만 그렇게 넣으면 서비스키가 등록되어있지 않다고 나온다!
https://perishablepress.com/stop-using-unsafe-characters-in-urls/
(Please) Stop Using Unsafe Characters in URLs | Perishable Press
Just as there are specifications for designing with CSS, HTML, and JavaScript, there are specifications for working with URIs/URLs. The Internet Engineering Task Force (IETF) clearly defines these specifications in numerous documents, including the followi
perishablepress.com
현재 나의 SERVICE KEY에 %가 들어있다면 무조건 SERVICE KEY IS NOT REGISTERED ERROR 가 뜰것이다! 인증키가 이미 UTF-8로 제공되고 있기때문에 디코딩 작업이 필요하다. 왜 이렇게 제공을 했을까...
아래 코드는 python3를 기준으로 작성한 코드이다.
from urllib.parse import urlencode, quote_plus
import requests
requests.utils.unquote(SERVICE_KEY)
payload = {"pageNo":"1","startPage":"1","numOfRows":"99999","pageSize":"10","LAWD_CD":""+rcode+ "","DEAL_YMD":""+date+"","type":"json", "serviceKey": requests.utils.unquote(SERVICE_KEY)}
print (requests.utils.unquote(SERVICE_KEY))
headers = {
'User-Agent': "PostmanRuntime/7.17.1",
'Accept': "*/*",
'Cache-Control': "no-cache",
'Postman-Token': "95c151d9-9676-4069-a9b5-9bbd72bf5319,cd4efab7-c0c4-4714-a2a3-2a6e03677233",
'Host': "openapi.molit.go.kr:8081",
'Accept-Encoding': "gzip, deflate",
'Cookie': "ROUTEID=.HTTP1",
'Connection': "keep-alive",
'cache-control': "no-cache"
}
response = requests.request("GET", url, headers=headers, params=payload)
이렇게 하면 결과가 아주 잘 나온다... 모두 삽질하지 마시길
'[연재코너1] 파이썬으로 부동산 데이터 분석 해봐요' 카테고리의 다른 글
[Python] 부동산 법정동코드 전처리를 통해 지역코드 얻어내기 (0) | 2019.11.28 |
---|