728x90

application programming interface 의 약자 API는 일반적으로 클라이언트와 서버 측면에서 설명됩니다. 요청을 보내는 애플리케이션을 클라이언트라고 하고 응답을 보내는 애플리케이션을 서버라고 합니다. 사이트를 서버로 파이썬에 클라이언트로 정보를 받는 방법을 알려드리겠습니다. 


API를 웹사이트에서 가져오는 방법은 여러가지가 있는데 저는 사이트에서 자체적으로 API 를 제공하고, 그 API로 정보를 불러온 다음 출력하는 예제를 만들어보겠습니다. 제가 가져온 사이트는 Weather API - OpenWeatherMap 입니다. 

1. Weather API - OpenWeatherMap에 들어갑니다. 

2. 위 메뉴중에 API 라는 부분을 누릅니다. 

3. 내리다 보면 아래와 같은 화면이 뜹니다. 이중에 사용하고 싶은 부분을 고르면 됩니다. 

저는 실시간으로 계속 정보를 받아서, 날씨의 정보를 알려주는 프로그램을 생각중이라 current weather data를 고릅니다.

4. 설명 읽기  

다음과 같이 APi 를 부르는 법에 대해 설명합니다.

 

5. 코드 짜기 

import requests
import json
from datetime import date
import time
import keyboard
while not keyboard.is_pressed('q'):
    today1 = date.today()
    today = today1.strftime("%m/%d")
    city = "Seoul"
    api_key = "여러분의 APi key를 적으세요 " 
    units = 'metric'
    api_url = f"https://api.openweathermap.org/data/2.5/weather?q={city}&appid={api_key}&units={units}"

    weather_data = requests.get(api_url)
    weather_data = json.loads(weather_data.text)

    name = weather_data['name']
    weather_main = weather_data['weather'][0]['main']
    temperature = weather_data['main']['temp']

    if weather_main == "Rain":
        state = "Take an umbrella as it's raining."
    elif weather_main == "Clouds":
        state = "It's cloudy, so enjoy some food."
    else:
        state = "Have a nice day."

    print(f"{city}'s weather is {weather_main}. {state}")
    print(f"{today}'s temperature is {temperature}°C")
    

    # 5초 대기
    time.sleep(5)

대충 이런 귀여운 코드를 짜봤습니다. 종료하는게 항상 걸리네요. 해결하는 방법 아시는 분 있음 댓글로 알려주세요. 

아무래도 온도가 순식간에 바뀌지 않으니 5초보다는 훨씬 길게 하는게 좋지만 가시성을 위해 이렇게 표현해보았습니다. 

어쨌거나 이런식으로 API를 불러올 수 있다면 더 나아가 수많은 응용이 가능합니다. 실시간 날씨정보를 데이터로 저장하니 날씨에 따라 어떤 시스템을 움직일 수도 있을 것이고, 어떤 안내문을 표현하는 것도 가능하겠습니다. 이런 잔테크닉들을 많이 배워서 프로젝트에 응용해야겠습니다. 

728x90

+ Recent posts