팀 프로젝트 해야지.. TIL 써야지.. 몸이 하나라 바쁜가... 조금만 더 힘을 내보자 🔥🔥
오늘은 공공데이터포털에서 한국관광공사 국문 관광정보 서비스에 대한 open API를 사용하기 위해 활용신청을 했다. 이 open API에는 다양한 정보가 포함되어 있는데 우리는 그 중 위치 기반 관광 정보 조회를 사용할 것이다.
하지만 시작부터 쉽지 않았다.
공공데이터 포털 홈페이지에서 미리 테스트 해볼 수 있는데 내가 발급받은 인증키를 넣고 미리보기 버튼을 눌렀다. 하지만! 등록되지 않은 키라면서 에러가 발생했다. 인터넷에 검색해본 결과 1시간에서 2시간 후에 정상적으로 될 수도 있다고 나왔다. 그런데 3시간이 지나도 진전이 없어서 결국 한국관광공사에 전화해서 문의했다. 궁금한 건 못 참지... 한국관광공사 api 담당자 분이 말씀하시길, 아직 한국관광공사 테이블에 내가 신청을 했다는 데이터가 넘어오지 않았다고 하셨다. 그래서 담당자 분이 계속 모니터링 해주신다고 했고 도저히 내 신청 정보가 넘어갈 기미가 보이지 않으면 다시 전화 주신다고 하셨다.
전화를 끊고 1시간에서 2시간 뒤에 다시 해봤는데 정상적으로 실행이 되었다.
이 api는 응답으로 오는 데이터가 xml 포맷이다. 내가 원하는 건 json 포맷이었는데 여기서는 xml로 제공하니까 내가 json으로 변환해야 했다.
구글링을 통해 파이썬의 xmltodict 라이브러리를 알게 되었고 이 라이브러리와 json 라이브러리로 xml 포맷을 json 포맷으로 변환했다.
import requests
import xmltodict
import json
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36'
}
key = '인증 키'
url = '요청 url'
r = requests.get(url, headers=headers)
dictionary = xmltodict.parse(r.text) # xml을 파이썬 객체(딕셔너리)로 변환
jsonDump = json.dumps(dictionary) # 파이썬 객체(딕셔너리)를 json 문자열로 변환
jsonBody = json.loads(jsonDump) # json 문자열을 파이썬 객체(딕셔너리)로 변환
print(jsonBody)
구글링을 참고해 위 코드를 완성했다. 실행하면 json 포맷으로 변환된 것을 확인할 수 있다!!