반응형
https://andjjip.tistory.com/108
[Python] 공공데이터 api로 데이터 가져오기
공공 데이터 활용 공공데이터 신청하기 공공데이터 포털은 공공기관이 생성 또는 취득하여 관리하고 있는 공공데이터를 한 곳에서 제공하는 통합 창구이다. 파일데이터, 오픈API, 시각화 등 다
andjjip.tistory.com
여기를 참고하면 나보다 잘되어 있다 .
from urllib.parse import urlencode, unquote
import requests
import json
url = 'http://apis.data.go.kr/1360000/VilageFcstInfoService/getUltraSrtNcst'
queryParams = '?' + urlencode(
{
"ServiceKey" : unquote("NdbEdqC6AC4FnV%2BEPdFfqVXv55cNZPizD5Nr3ZvT7ZVoIk%2Bhbra9C4TMN3YRJYG3HXBy0DYax%2FlDCRor5Nhryg%3D%3D"),
"base_date" : "20200730",
"base_time" : "1800",
"nx" : 99,
"ny" : 75,
"numOfRows" : "10",
"pageNo" : "1",
"dataType" : "JSON"
}
)
queryURL = url + queryParams
response = requests.get(queryURL)
print("=== response json data start ===")
print(response.text)
print("=== response json data end ===")
print()
r_dict = json.loads(response.text)
r_response = r_dict.get("response")
r_body = r_response.get("body")
r_items = r_body.get("items")
r_item = r_items.get("item")
result9 = {}
for item in r_item:
result9.setdefault(item["category"],item["obsrValue"])
for item in r_item:
if(item.get("category") == "T1H"):
result = item
break
for item in r_item:
if(item.get("category") == "RN1"):
result2 = item
break
for item in r_item:
if(item.get("category") == "UUU"):
result3 = item
break
for item in r_item:
if(item.get("category") == "VVV"):
result4 = item
break
for item in r_item:
if(item.get("category") == "REH"):
result5 = item
break
for item in r_item:
if(item.get("category") == "PTY"):
result6 = item
break
for item in r_item:
if(item.get("category") == "VEC"):
result7 = item
break
for item in r_item:
if(item.get("category") == "WSD"):
result8 = item
break
#print("=== response dictionary(python object) data start ===")
print("===이준호의 부산광역시 해운대구 우동 기상 정보===")
print("============== 반갑습니다 여러분 ================")
print("========== 기상정보는 아래와 같습니다 ===========")
print("시간->"+result.get("baseTime")[:-2] +":00"+ " 기온 : " + result.get("obsrValue") + "C")
print("시간->"+result2.get("baseTime")[:-2] +":00"+ " 1시간강수량 : " + result2.get("obsrValue") + "mm")
print("시간->"+result3.get("baseTime")[:-2] +":00" + " 동서바람성분 : " + result3.get("obsrValue") + "m/s")
print("시간->"+result4.get("baseTime")[:-2] +":00" + " 남북바람성분 : " + result4.get("obsrValue") + "m/s")
print("시간->"+result5.get("baseTime")[:-2] +":00" + " 습도 : " + result5.get("obsrValue") + "%")
print("시간->"+result6.get("baseTime")[:-2] +":00" + " 강수형태 : " + result6.get("obsrValue") + "")
print("시간->"+result7.get("baseTime")[:-2] +":00" + " 풍향 : " + result7.get("obsrValue") + "")
print("시간->"+result8.get("baseTime")[:-2] +":00"+ " 풍속 : " + result8.get("obsrValue") + "m/s")
print(result9)
print("===잘 보셨다면 좋아요 구독 알람설정까지 LOVE YOU===")
print()
나는 리눅스보다 비주얼 스트디오가 편해서 비주얼 스트디오로 작성 !
result = {}
for item in r_item:
result.setdefault(item["category"], item["obsrValue"])
딕션너리를 사용하면
FOR문을 연속적으로 사용 안하고
그냥 3줄로 완성할 수 있다 .
반응형