분석시각화 대회 코드 공유 게시물은
내용 확인 후
좋아요(투표) 가능합니다.
날씨 api를 불러오는 코딩중인데 도움이 필요합니다..
import requests # HTTP 요청을 보내는 모듈
import json # json 파일 파싱하여 데이터 읽는 모듈
import datetime # 날짜시간 모듈
from datetime import date, datetime, timedelta # 현재 날짜 외의 날짜 구하기 위한 모듈
# 기상청_동네 예보 조회 서비스 api 데이터 url 주소
vilage_weather_url = "http://apis.data.go.kr/1360000/VilageFcstInfoService_2.0/getUltraSrtFcst?"
# 실황정보를 조회하기 위해 발표일자, 발표시각, 예보지점 X 좌표, 예보지점 Y 좌표의 조회 조건으로
# 자료구분코드, 실황값, 발표일자, 발표시각, 예보지점 X 좌표, 예보지점 Y 좌표의 정보를 조회하는 기능
service_key = "서비스키"
now = datetime.now()
print("날씨를 구하고자 하는 지역의 위도, 경도 값을 입력하시오 - ex) 용인 기흥구 (62 120)")
print("(x y) : ", end="")
nx,ny=input().split()
# 오늘
today = datetime.today().strftime("%Y%m%d")
y = date.today() - timedelta(days=1)
yesterday = y.strftime("%Y%m%d")
# 1일 총 8번 데이터가 업데이트 된다.(0200, 0500, 0800, 1100, 1400, 1700, 2000, 2300)
# 현재 api를 가져오려는 시점의 이전 시각에 업데이트된 데이터를 base_time, base_date로 설정
# 1일 총 8번 데이터가 업데이트 된다.(0200, 0500, 0800, 1100, 1400, 1700, 2000, 2300)
# 현재 api를 가져오려는 시점의 이전 시각에 업데이트된 데이터를 base_time, base_date로 설정
if now.minute<45: # base_time와 base_date 구하는 함수
if now.hour==0:
base_time = "2330"
base_date = yesterday
else:
pre_hour = now.hour-1
if pre_hour<10:
base_time = "0" + str(pre_hour) + "30"
else:
base_time = str(pre_hour) + "30"
base_date = today
else:
if now.hour < 10:
base_time = "0" + str(now.hour) + "30"
else:
base_time = str(now.hour) + "30"
base_date = today
payload = "serviceKey=" + service_key + "&" +\
"base_date=" + base_date + "&" +\
"base_time=" + base_time + "&" +\
"nx=" + nx + "&" +\
"ny=" + ny + "&" +\
"dataType=JSON"
# 값 요청 (웹 브라우저 서버에서 요청 - url주소와 )
res = requests.get(vilage_weather_url + payload)
items = res.json().get('response').get('body').get('items')
weather_data = dict()
for item in items['item']:
# 기온
if item['category'] == 'T1H':
weather_data['tmp'] = item['fcstValue']
# 습도
if item['category'] == 'REH':
weather_data['hum'] = item['fcstValue']
# 하늘상태: 맑음(1) 구름많은(3) 흐림(4)
if item['category'] == 'SKY':
weather_data['sky'] = item['fcstValue']
# 1시간 동안 강수량
if item['category'] == 'RN1':
weather_data['rain'] = item['fcstValue']
print("response: ", weather_data)
위가 전체 코드이고
실행 후에 위도, 경도값을 입력하면 이런 에러가 뜹니다. 혹시 어떤 부분이 문제인지 아시는 분 계실까요?
데이콘(주) | 대표 김국진 | 699-81-01021
통신판매업 신고번호: 제 2021-서울영등포-1704호
서울특별시 영등포구 은행로 3 익스콘벤처타워 901호
이메일 dacon@dacon.io | 전화번호: 070-4102-0545
Copyright ⓒ DACON Inc. All rights reserved