이 튜토리얼에서는 OpenWeatherMap API를 활용해 특정 도시의 날씨 정보를 가져오는 방법을 알아봅니다. OpenWeatherMap API를 사용하려면 먼저 API 키가 필요한데, 공식 웹사이트에서 계정을 만들면 무료로 발급받을 수 있습니다.
계정을 생성하고 API 키를 발급받으세요. 분당 60회 호출까지는 무료이며, 그 이상 사용하려면 유료 플랜에 가입해야 합니다. 이 튜토리얼 수준에서는 무료 버전만으로 충분합니다. HTTP 요청을 보내기 위해 requests 모듈이, 응답 데이터를 다루기 위해 json 모듈이 필요합니다.
날씨 정보를 가져오는 단계
requests와 json 모듈을 임포트합니다.
날씨 API의 기본 URL(https://api.openweathermap.org/data/2.5/weather?)을 초기화합니다.
도시 이름과 API 키를 설정합니다.
기본 URL에 API 키와 도시 이름을 추가합니다.
requests.get() 메서드로 GET 요청을 보냅니다.
json 모듈을 사용해 응답에서 날씨 정보를 추출합니다.
예제 코드
전체 코드는 다음과 같습니다.
# requests와 json 모듈 임포트
import requests, json
# 기본 URL
BASE_URL = "https://api.openweathermap.org/data/2.5/weather?"
# 도시 이름
CITY = "Hyderabad"
# API 키
API_KEY = "Your API Key"
# URL 조합
URL = BASE_URL + "q=" + CITY + "&appid=" + API_KEY
# HTTP 요청
response = requests.get(URL)
# 응답 상태 코드 확인
if response.status_code == 200:
# JSON 형식으로 데이터 받기
data = response.json()
# main 딕셔너리 블록 가져오기
main = data['main']
# 온도
temperature = main['temp']
# 습도
humidity = main['humidity']
# 기압
pressure = main['pressure']
# 날씨 보고서
report = data['weather']
print(f"{CITY:-^30}")
print(f"Temperature: {temperature}")
print(f"Humidity: {humidity}")
print(f"Pressure: {pressure}")
print(f"Weather Report: {report[0]['description']}")
else:
# 오류 메시지 출력
print("Error in the HTTP request")실행 결과
위 프로그램을 실행하면 다음과 같은 결과가 출력됩니다.
----------Hyderabad----------- Temperature: 295.39 Humidity: 83 Pressure: 1019 Weather Report: mist
추가 팁: 온도를 섭씨로 변환하기
OpenWeatherMap API는 기본적으로 온도를 켈빈(K) 단위로 반환합니다. 위 실행 결과의 295.39가 바로 켈빈 값입니다. 섭씨(°C)로 변환하려면 켈빈 값에서 273.15를 빼면 되고, 더 간단하게는 요청 URL 끝에 &units=metric 파라미터를 추가하면 API가 바로 섭씨 온도를 반환해 줍니다.
마무리
이상으로 OpenWeatherMap API를 이용해 원하는 도시의 현재 날씨를 확인하는 방법을 살펴보았습니다. 이 코드를 응용하면 여러 도시의 날씨를 한 번에 조회하거나, 일정 시간마다 자동으로 날씨를 알려주는 프로그램도 만들 수 있습니다. 튜토리얼을 따라 하다가 어려운 점이 있다면 댓글로 남겨 주세요.