ACHO.pk devlog

[멋쟁이사자처럼10기] Python_API를 이용해 날씨 정보 받아오기 본문

멋쟁이사자처럼

[멋쟁이사자처럼10기] Python_API를 이용해 날씨 정보 받아오기

Acho 2022. 5. 1. 14:31

날씨 정보 사이트에서 API Key 발급받기


OpenAPI를 사용할 때 본인이 누군인지 나타내는 것을 API Key라고 한다.

 

 

 

API 사용에 꼭 필요한 API Key를 발급받기 위해
1. openweather 사이트에 접속해서 회원가입을 한다.
2. 회원가입을 할 때 기재한 이메일로 인증을 완료한다.
3. 마이 페이지에 접속하여 API Key를 발급 받으면 된다.
https://home.openweathermap.org/

 

Members

Enter your email address and we will send you a link to reset your password.

home.openweathermap.org


API 에 대해 먼저 이해하기


API (Application Programming Interface) = 응용 프로그램 프로그래밍 인터페이스


클라이언트가 서버에 요청을 하고, 서버는 클라이언트에 응답을 해준다.
클라이언트와 서버가 데이터를 원활하게 주고 받기 위해서 API가 서로 간의 데이터가 교환이 될 수 있도록 약속을 하는 것이다.

  • API를 만든다 = 사용자가 필요로 하는 기능을 만들고 서버에 올려놓은 뒤에 특정 규약에 따라 사용할 수 있게 하는 것이다.
  • API를 사용한다 = 누군가가 만들어 놓은 기능을 특정한 규약에 맞춰 사용하는 것이다.

API 링크 만들기


응답을 원하는 api 주소로 요청을 보내는 것 = api를 콜한다, 부른다

 

 

Current Weather Data API 중 지역 이름으로 날씨를 받아오는 API를 사용한다.
API doc = API document(사용 방법 설명서) - API를 사용하기 이전에 꼭 확인해야하는 정보이다.

city = "Seoul"
apikey = "고유 API Key"

##그대로 출력됨
api = "http://api.openweathermap.org/data/2.5/weather?q={city name}&appid={your api key}"
print(api)	#http://api.openweathermap.org/data/2.5/weather?q={city name}&appid={your api key}

##{}안에 변수로 변경하기 원하는 이름을 찾고, 원하는 변수의 이름으로 바꿔준다.
api = f"http://api.openweathermap.org/data/2.5/weather?q={city}&appid={apikey}"
print(api)	#http://api.openweathermap.org/data/2.5/weather?q=Seoul&appid=고유 API Key

f-string를 이용해서 {} 문자열 안에 변수를 넣는다


날씨 받아오기

import requests  #요청을 보내기 위해 사용

city = "Seoul"
apikey = "################################"
api = f"http://api.openweathermap.org/data/2.5/weather?q={city}&appid={apikey}"

result = requests.get(api)
print(result)
#<Response [200]>

print(result.text)
#날씨를 나타내는 데이터가 출력됨

API에서 받아온 데이터를 보기 좋게 출력하기1


-json 모듈 (javascript object notation) : 파이썬이 기본적으로 제공하는 모듈이라 pip로 설치할 필요가 없다. 데이터를 주고 받을 때 사용하는 포맷으로 응답값을 보기 좋게 출력할 수 있다.

import requests
import json

city = "Seoul"
apikey = "################################"
api = f"http://api.openweathermap.org/data/2.5/weather?q={city}&appid={apikey}"

result = requests.get(api)
print(result.text)
print(type(result.text))	#<class 'str'>

data = json.loads(result.text)	#응답 받아온 데이터는 문자열이다. 이런 일반 문자열을 json 타입으로 변경한다.
print(type(data))	#<class 'dict'>



API에서 받아온 데이터를 보기 좋게 출력하기2

 

전체 딕셔너리 안에 '좌표'라는 key가 있다. 이 key 값에 해당되는 value는 하나의 딕셔너리로, '경도', '위도' 값이 각각 key와 value로 나열되어 있는 것을 확인할 수 있다.

Json 코드를 확인하고 이를 사용해 우리가 원하는 값을 출력할 수 있다.
<JSON 코드 블럭>

{
  "coord": {
    "lon": -122.08,
    "lat": 37.39
  },
  "weather": [
    {
      "id": 800,
      "main": "Clear",
      "description": "clear sky",
      "icon": "01d"
    }
  ],
  "base": "stations",
  "main": {
    "temp": 282.55,
    "feels_like": 281.86,
    "temp_min": 280.37,
    "temp_max": 284.26,
    "pressure": 1023,
    "humidity": 100
  },
  "visibility": 10000,
  "wind": {
    "speed": 1.5,
    "deg": 350
  },
  "clouds": {
    "all": 1
  },
  "dt": 1560350645,
  "sys": {
    "type": 1,
    "id": 5122,
    "message": 0.0139,
    "country": "US",
    "sunrise": 1560343627,
    "sunset": 1560396563
  },
  "timezone": -25200,
  "id": 420006353,
  "name": "Mountain View",
  "cod": 200
  }

 


API를 사용해 날짜 정보를 출력하는 프로그램

https://github.com/Acho-mj/Likelion10-study/tree/main/Python%20API

 

GitHub - Acho-mj/Likelion10-study: 멋쟁이 사자처럼 10기 백엔드입니다. 코드라이언과 학교 멋사 스터디

멋쟁이 사자처럼 10기 백엔드입니다. 코드라이언과 학교 멋사 스터디에서 학습한 내용을 올립니다. - GitHub - Acho-mj/Likelion10-study: 멋쟁이 사자처럼 10기 백엔드입니다. 코드라이언과 학교 멋사 스

github.com

 

 

언어 및 단위 변경하기

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"""
Comments