| 일 | 월 | 화 | 수 | 목 | 금 | 토 | 
|---|---|---|---|---|---|---|
| 1 | ||||||
| 2 | 3 | 4 | 5 | 6 | 7 | 8 | 
| 9 | 10 | 11 | 12 | 13 | 14 | 15 | 
| 16 | 17 | 18 | 19 | 20 | 21 | 22 | 
| 23 | 24 | 25 | 26 | 27 | 28 | 29 | 
| 30 | 
- 멋사12
 - 멋사10기
 - 멋사 면접
 - 멋사 서류평가
 - 멋사 10기
 - 백엔드
 - 멋사
 - 기사 제목 크롤링
 - 크롤링
 - 웹동아리
 - 멋쟁이 사자처럼
 - 파이썬
 - 멋쟁이사자처럼
 - 디스코드봇
 - IT동아리
 - 멋사 서류
 - django
 - ㅏㄴ
 - 멋쟁이사자처럼11기
 - API
 - 파이썬 크롤링
 - 멋쟁이사자처럼 서류
 - discord
 - 멋사11기
 - 알림봇
 - 멋쟁이사자처럼10기
 - 멋사 합격
 - 코딩동아리
 - 깃허브
 - 멋쟁이사자처럼대학
 
- Today
 
- Total
 
ACHO.pk devlog
[멋쟁이사자처럼10기] Python_API를 이용해 날씨 정보 받아오기 본문
날씨 정보 사이트에서 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"""'멋쟁이사자처럼' 카테고리의 다른 글
| [멋쟁이사자처럼10기] Python를 이용해서 언어를 감지하고, 번역하기 (0) | 2022.05.07 | 
|---|---|
| [멋쟁이사자처럼10기] Python으로 검색어 뉴스 기사 제목 크롤링 + 엑셀 파일 저장 (0) | 2022.05.02 | 
| [멋쟁이사자처럼10기] Python 크롤링으로 뉴스 기사 제목 추출하기 (0) | 2022.05.01 | 
| [멋쟁이사자처럼10기] Html/CSS로 나만의 이력서 만들기 (0) | 2022.04.11 | 
| [멋쟁이사자처럼10기] Python 리스트 딕셔너리 심화 (0) | 2022.04.10 |