영벨롭 개발 일지

[Python]파이썬으로 날씨 정보 받아오기 - openweathermap API 본문

Programming Language/Python

[Python]파이썬으로 날씨 정보 받아오기 - openweathermap API

영벨롭 2022. 5. 4. 21:54

[ API 알아보기 ]

 

 API(Application Programming Interface)는 프로그램과 프로그램을 이어주는 연결고리로, 데이터를 원할하게 주고받을 수 있도록 어떠한 약속을 해준것이라고 할 수 있습니다. 

 

 API를 통해 클라이언트(client)와 서버(server)가 데이터를 교환할 수 있는 것이지요!

 

 추가적으로 인터페이스(Interface)는 사용자와 컴퓨터가 소통할 수 있도록 하는 것입니다. 대표적으로 키보드와 마우스가 있겠죠?

 

 

출처: https://i.imgur.com/GjZMfdJ.png

 

 

 

[ API Key 알아보기 ]

 

 여러분이 어떠한 API를 만들었다고 가정해봅시다. 

 

 이때 내가 만든 API를 누가 사용하는지를 알 수 있어야겠죠? 때문에 API Key를 가진 사용자만이 우리의 API를 사용할 수 있도록 하는 것입니다. 

 

 API를 제공하는 측에서는 이 API Key를 통해서 어떤 사용자가 어떤 API를 얼마만큼 사용하고 있느지를 추적하게 됩니다.

 

 

 

[ openweathermap API Key 발급받기 ]

 

 openweathermap은 날씨와 관련된 데이터들을 API를 통해 제공해주는 오픈소스 라이브러리 입니다.  

 

 다음 사이트로 이동하여 회원가입 후, API key를 발급받습니다. 

 

https://openweathermap.org/

 

Сurrent weather and forecast - OpenWeatherMap

Leaving everything behind, people are fleeing conflict in Ukraine. They need shelter, food, and water. When you subscribe to our service, you can join us to help with donation of just of 20. Openweather will add 40 to each donation and send it to Disastrou

openweathermap.org

 

 

 

 

 

 

 

[ 날씨 정보 가져오기 ]

 

 openweathermap 사이트의 API 탭이 가시면 다양한 API 사용법을 확인할 수 있습니다. 

 

 그 중, Current Weather Data 부분을 클릭합니다. 

 

 

 안으로 들어가시면, API 사용법이 명시되어 있습니다. 특정 위치의 날씨 정보를 위도와 경도를 통해 불러올 수도 있고, 도시 정보를 통해 불러올 수도 있습니다. 

 

 뿐만 아니라 여러 옵션들도 추가로 명시할 수 있습니다. 연습삼아 여러 API를 사용해보세요~!

 

 저는 도시를 기준으로 언어와 온도 표시 기준도 명시하겠습니다. 

 

 api를 통해 받아온 데이터를 requests를 통해 응답받습니다. 

 

 응답받은 데이터를 json 형태로 변환하여 저장하겠습니다. 

 

import requests
import json

city = "Seoul" #도시
apiKey = "본인의 api key"
lang = 'kr' #언어
units = 'metric' #화씨 온도를 섭씨 온도로 변경
api = f"https://api.openweathermap.org/data/2.5/weather?q={city}&appid={apiKey}&lang={lang}&units={units}"

result = requests.get(api)
result = json.loads(result.text)

print(result)

 

 

 응답받은 데이터를 보고 경도와 위도, 날씨, 온도, 습도를 출력해보겠습니다. 

 

name = result['name']
lon = result['coord']['lon']
lat = result['coord']['lat']
weather = result['weather'][0]['main']
temperature = result['main']['temp']
humidity = result['main']['humidity']

print(name)
print(lon, ', ', lat)
print(weather)
print(temperature)
print(humidity)

반응형