본문 바로가기
Python

[python] 공공 데이터 포털 API 기상청 관광코스별 관광지 상세 날씨 조회

by 퍼포먼스마케팅코더 2022. 8. 14.
반응형

이거는 공공 데이터 포털 여기 안에서 기상청에 관련됐던 api가 인기가 많더라고요 그중에서 하나를 뽑아다 게 기상청 관광 코스별 관광지 상세 날씨에 관련해서 조회를 할 수 있는 이거에 대해서 가져와 봤습니다. 마찬가지로 api 키만 발급받으면요. 한 2시간 후에 바로 api를 통해서 파이썬 코딩으로 데이터를 바로 조회를 할 수 있습니다. 

[python] 공공 데이터 포털 API 기상청 관광코스별 관광지 상세 날씨 조회

 

공공 데이터 포털 API 기상청 관광코스별 관광지 상세 날씨 API 키 발급

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

 

기상청_관광코스별 관광지 상세 날씨 조회서비스

관광코스별 관광지의 동네예보, 기상지수예보, 시군구별 관광기후지수 정보를 조회하는 서비스

www.data.go.kr

[python] 공공 데이터 포털 API 기상청 관광코스별 관광지 상세 날씨 조회

먼저 한 세 가지 정도만 제가 가지고 와봤는데요. 코딩도 세 가지입니다. 첫 번째로 먼저 이 api가 관광 코스별로 관광지 내에 동네 예보 기상지수 예보 그다음에 관광 기후 지수 이런 것에 대한 정보를 조회를 하는데 그중 첫 번째가 어떤 특정 지역에 따른 아이디가 있습니다. 시군구 아이디라고 그거를 집어넣고 이제 어떤 특정 기간에 조회를 하겠다라는 것을 api key 안에다가 입력만 하면 이에 따른 정보 값이 나와요.

 

그걸 참고를 해보시면 될 것 같고 그다음에 두 번째는 데이트 코스입니다 해서 데이트 코스는 특이해요. 관광 코스 아이디가 있습니다. 이 관광 코스 아이디를 치면 안에서 관광지의 이름하고 그에 따라서 뭐 식중독 지수 체감 온도 자외선 지수 이런 것을 주더라고요 참 흥미롭다라는 걸로 확인을 할 수 있었던 자료였었던 것 같고요.

 

그다음에 세 번째 마지막 데이트는 동네 예보에 관련된 조회인데 코스 명을 집어넣으면 관광 코스 id죠 관광 코스 id를 집어넣으면 이 따서 관광지 명이 그게 나오고 여기는 테마와 기온 습도에 관련됐던 데이터를 조회를 할 수 있습니다. 그거를 파헤치는 게 흥미로웠었고 이거에 대해서 관심이 있으신 분들은 이제 api 키만 넣으면 바로 데이터 나오니까요. 그거 참고를 하셔서 보시면 될 것 같습니다.

 

from urllib.request import urlopen
from urllib.parse import urlencode, unquote, quote_plus
import urllib
import requests
import json
import pandas as pd
from datetime import datetime,timedelta
import warnings
import xmltodict # 결과가 xml 형식으로 반환된다. 이것을 dict 로 바꿔주는 라이브러리다

#기상청_관광코스별 관광지 상세 날씨 조회서비스
#관광코스별 관광지의 동네예보, 기상지수예보, 시군구별 관광기후지수 정보를 조회하는 서비스


#시군구별관광기후지수조회
#조회조건(현재시각, 예보기간, 시군구 아이디)으로 시군구별 관광기후지수 데이터(시군구이름, 관광기후지수, 관광기후등급 등)를 조회하는 기능

warnings.filterwarnings('ignore')

serviceKey='' #공공데이터포털에서 받은 인증키
pageNo = '1'  #페이지번호
numOfRows = '100' #한 페이지 결과 수
dataType = 'json'  #요청자료형식(XML/JSON)
CURRENT_DATE ='2021081010'  #2018-12-31 00시부터 조회
DAY = '3'  #CURRENT_DATE부터 입력값까지의 자료 호출
CITY_AREA_ID = '5013000000' #시군구아이디

url ='https://apis.data.go.kr/1360000/TourStnInfoService/getCityTourClmIdx?serviceKey={}&pageNo={}&numOfRows={}&dataType={}&CURRENT_DATE={}&DAY={}&CITY_AREA_ID={}'.format(serviceKey,pageNo, numOfRows,dataType , CURRENT_DATE, DAY, CITY_AREA_ID)

#HTTPSConnectionPool(host='www.work.go.kr', port=443): Max retries exceeded with url 
# 오류 발견시 requests.get(url, verify=False) 로 넣어주면됨. 

response = requests.get(url, verify=False)
#dict_data = xmltodict.parse(response.text)
#json_data = json.dumps(dict_data, ensure_ascii=False)
r_data = json.loads(response.text)


#Shape of passed values is (2, 4), indices imply (1, 4)
#data = pd.DataFrame(r_data['response']['body']['items']['item'])  이걸로 넣어주면 됨.

#If using all scalar values, you must pass an index 에러 문구가 뜰 경우, index=[0]
#data = pd.DataFrame(r_data['response']['body']['items']['item'], index=[0]) 이렇게 바꿔주면됨.


try : 
    data = pd.DataFrame(r_data['response']['body']['items']['item'])  
except :
    data = pd.DataFrame(r_data['response']['body']['items']['item'], index = [0])

#data.columns = r_data['response']['columns'] #컬럼변경

data

# 간혹 밑의 에러가 뜨는 경우가 있음. 
#'<?xml version="1.0" encoding="UTF-8" standalone="yes"?><response><header><resultCode>99</resultCode><resultMsg>SERVICE KEY IS NOT REGISTERED ERROR.</resultMsg></header></response>'
# 그럴 경우, https://www.data.go.kr/iim/api/selectAPIAcountView.do 에 들어가서
# 미리보기로 테스트 진행 이후 해당 service key를 넣어주면은 정상 작동됨.(utf -8 인코딩 문제인듯)

 

from urllib.request import urlopen
from urllib.parse import urlencode, unquote, quote_plus
import urllib
import requests
import json
import pandas as pd
from datetime import datetime,timedelta
import warnings
import xmltodict # 결과가 xml 형식으로 반환된다. 이것을 dict 로 바꿔주는 라이브러리다

#기상청_관광코스별 관광지 상세 날씨 조회서비스
#관광코스별 관광지의 동네예보, 기상지수예보, 시군구별 관광기후지수 정보를 조회하는 서비스

#기상지수예보조회
#조회조건(현재시각, 예보기간, 코스ID)으로 기상지수예보 데이터 (코스명, 관광지명, 테마, 식중독지수, 체감온도, 자외선지수 등)를 조회하는 기능

warnings.filterwarnings('ignore')

serviceKey='' #공공데이터포털에서 받은 인증키
pageNo = '1'  #페이지번호
numOfRows = '100' #한 페이지 결과 수
dataType = 'json'  #요청자료형식(XML/JSON)
CURRENT_DATE ='2019122010'  #2018-12-31 00시부터 조회
HOUR = '24'   #CURRENT_DATE부터 24시간 후까지의 자료 호출
COURSE_ID = '1'  #관광 코스ID

url ='https://apis.data.go.kr/1360000/TourStnInfoService/getTourStnWthrIdx?serviceKey={}&pageNo={}&numOfRows={}&dataType={}&CURRENT_DATE={}&HOUR={}&COURSE_ID={}'.format(serviceKey,pageNo,numOfRows,dataType,CURRENT_DATE,HOUR,COURSE_ID)
response = requests.get(url, verify=False)
#dict_data = xmltodict.parse(response.text)
#json_data = json.dumps(dict_data, ensure_ascii=False)
r_data = json.loads(response.text)

try : 
    data = pd.DataFrame(r_data['response']['body']['items']['item'])  
except :
    data = pd.DataFrame(r_data['response']['body']['items']['item'], index = [0])
data

 

from urllib.request import urlopen
from urllib.parse import urlencode, unquote, quote_plus
import urllib
import requests
import json
import pandas as pd
from datetime import datetime,timedelta
import warnings
import xmltodict # 결과가 xml 형식으로 반환된다. 이것을 dict 로 바꿔주는 라이브러리다

#기상청_관광코스별 관광지 상세 날씨 조회서비스
#관광코스별 관광지의 동네예보, 기상지수예보, 시군구별 관광기후지수 정보를 조회하는 서비스

#동네예보조회
#조회조건(현재시각, 예보기간, 코스ID)으로 동네예보 데이터(코스명, 관광지명, 테마, 기온, 습도 등)를 조회하는 기능

warnings.filterwarnings('ignore')

serviceKey='' #공공데이터포털에서 받은 인증키
pageNo = '1'  #페이지번호
numOfRows = '100' #한 페이지 결과 수
dataType = 'json'  #요청자료형식(XML/JSON)
CURRENT_DATE ='2019122010'  #2018-12-31 00시부터 조회
HOUR = '24'   #CURRENT_DATE부터 24시간 후까지의 자료 호출
COURSE_ID = '1'  #관광 코스ID

url ='https://apis.data.go.kr/1360000/TourStnInfoService/getTourStnVilageFcst?serviceKey={}&pageNo={}&numOfRows={}&dataType={}&CURRENT_DATE={}&HOUR={}&COURSE_ID={}'.format(serviceKey,pageNo,numOfRows,dataType,CURRENT_DATE,HOUR,COURSE_ID)
response = requests.get(url, verify=False)
#dict_data = xmltodict.parse(response.text)
#json_data = json.dumps(dict_data, ensure_ascii=False)
r_data = json.loads(response.text)

try : 
    data = pd.DataFrame(r_data['response']['body']['items']['item'])  
except :
    data = pd.DataFrame(r_data['response']['body']['items']['item'], index = [0])
data
반응형

댓글