import requests
import json


city = "Seoul"
apikey = "################################"
lang = "kr"
# units - metric &기호를 통해 기능 추가 화씨에서 섭씨로
api = f"""http://api.openweathermap.org/data/2.5/\
weather?q={city}&appid={apikey}&lang={lang}&units=metric"""

result = requests.get(api)
# print(result.text)

data = json.loads(result.text)

# 지역 : name
print(data["name"],"의 날씨입니다.")
# 자세한 날씨 : weather - description
print("날씨는 ",data["weather"][0]["description"],"입니다.")
# 현재 온도 : main - temp
print("현재 온도는 ",data["main"]["temp"],"입니다.")
# 체감 온도 : main - feels_like
print("하지만 체감 온도는 ",data["main"]["feels_like"],"입니다.")
# 최저 기온 : main - temp_min
print("최저 기온은 ",data["main"]["temp_min"],"입니다.")
# 최고 기온 : main - temp_max
print("최고 기온은 ",data["main"]["temp_max"],"입니다.")
# 습도 : main - humidity
print("습도는 ",data["main"]["humidity"],"입니다.")
# 기압 : main - pressure
print("기압은 ",data["main"]["pressure"],"입니다.")
# 풍향 : wind - deg
print("풍향은 ",data["wind"]["deg"],"입니다.")
# 풍속 : wind - speed
print("풍속은 ",data["wind"]["speed"],"입니다.")

 

이번에는 날씨정보를 불러오는 API 를 통해 오늘의 날씨를 알려보는 프로그램을 작성하겠습니다.

 

import requests
import json

 

먼저 주소 요청을 get 하기 위해 request 모듈과 받아온 json형식의 데이터를 활용하기 위해 json 모듈을 호출해주었습니다.

 

city = "Seoul"
apikey = "################################"
lang = "kr"
# units - metric &기호를 통해 기능 추가 화씨에서 섭씨로
api = f"""http://api.openweathermap.org/data/2.5/\
weather?q={city}&appid={apikey}&lang={lang}&units=metric"""

먼저 원하는 장소를 변수에 선언을 해주고, 해당 사이트에서 발급받은 api 키를 사용하기 위해서 apikey 를 변수에 담고 원하는 언어를 담았습니다.

 

그리고 api 를 불러오는데, 우리는 섭씨가 직관적이므로 끝에 units=metric을 적어주면 됩니다.

 

사용한 api키 사이트는 다음과 같습니다.

https://openweathermap.org/

 

Сurrent weather and forecast - OpenWeatherMap

Access current weather data for any location on Earth including over 200,000 cities! The data is frequently updated based on the global and local weather models, satellites, radars and a vast network of weather stations. how to obtain APIs (subscriptions w

openweathermap.org

 

해당 사이트에서 회원가입 한 후에, api키를 발급한 뒤에 API 를 클릭 한 뒤에 Current Weather Data 의 API doc 를 클릭하고,

 

그 외에도 여러가지 기능들이 있어 둘러보는걸 추천한다

 

다음으로는 해당 API를 가져와 본인의 api 키와 원하는 기능들을 추가하여 프로그램을 구현하면 됩니다.

 

추가로 여러가지 기능들이 많다 ! 사용자에 따라서 응용하기에 좋다

 

본인은 city 와 lang 을 추가하여 해당 도시의 날씨를 원하는 언어로 요청받을수 있게 하였습니다.

 

result = requests.get(api)
# print(result.text)

data = json.loads(result.text)

# 지역 : name
print(data["name"],"의 날씨입니다.")
# 자세한 날씨 : weather - description
print("날씨는 ",data["weather"][0]["description"],"입니다.")
# 현재 온도 : main - temp
print("현재 온도는 ",data["main"]["temp"],"입니다.")
# 체감 온도 : main - feels_like
print("하지만 체감 온도는 ",data["main"]["feels_like"],"입니다.")
# 최저 기온 : main - temp_min
print("최저 기온은 ",data["main"]["temp_min"],"입니다.")
# 최고 기온 : main - temp_max
print("최고 기온은 ",data["main"]["temp_max"],"입니다.")
# 습도 : main - humidity
print("습도는 ",data["main"]["humidity"],"입니다.")
# 기압 : main - pressure
print("기압은 ",data["main"]["pressure"],"입니다.")
# 풍향 : wind - deg
print("풍향은 ",data["wind"]["deg"],"입니다.")
# 풍속 : wind - speed
print("풍속은 ",data["wind"]["speed"],"입니다.")

 

그 후에 요청 받은 데이터를 변수에 담은 후에, 해당 데이터를 json 형식으로 읽어 활용하였습니다.

json 형식은 딕셔너리 형태로 되어있는데, "name" key에는 Seoul 의 value가 있고, 온도는 "main" key안에 "temp" key에 온도에 정보가 있다고 생각하면 됩니다.

ex) data = { "name" : "Seoul" , "main" : { "temp" : "온도" } } 이런식으로 json을 활용하여 데이터를 다뤄봅시다.

'TIL > Python' 카테고리의 다른 글

파이썬 Email 전송 - smtplib  (0) 2022.09.17
파이썬 자동 번역기능 googletrans  (0) 2022.09.17
Python 웹 크롤링 - Beautiful Soup  (1) 2022.09.17

+ Recent posts