본문 바로가기

카테고리 없음

SMART FACTORY - 금주 TEST : PYTHON을 이용하여 공공데이터를 불러오자

반응형

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줄로 완성할 수 있다 . 

 

반응형