Python

[파이썬] OpenWeather API 활용 방법 - 실시간 날씨 데이터 수집

weweGH 2025. 4. 11. 09:00
반응형

OpenWeather 데이터 수집
OpenWeather 데이터 수집


OpenWeather API 활용 방법 - 실시간 날씨 데이터 수집


들어가며


OpenWeather는 다양한 날씨 데이터를 제공하는 플랫폼입니다. 실시간 날씨 정보, 예보 등의 데이터를 수집하고 활용할 수 있습니다. 다양한 요금제가 있지만, 현재 날씨 데이터, 5일 동안의 날씨 예보, 과거 날씨 데이터 등 무료로 사용할 수 있는 데이터가 충분히 있습니다. 이 글에서는 현재 날씨 데이터를 파이썬으로 수집하는 방법을 소개합니다.


  • OpenWeather 회원가입
  • 무료/유료 요금제 구독
  • 실시간 날씨 데이터 수집

OpenWeather 회원가입


먼저 회원가입을 진행합니다. Username, 이메일, 비밀번호만 입력하면 회원가입은 완료입니다. 회원가입 진행 후, 입력한 이메일에 수신된 '이메일 인증'을 꼭 진행해야 합니다.

회원가입이메일 인증
회원가입, 이메일 인증


무료/유료 요금제 구독


저는 무료로 1,000개의 요청이 가능한 Pay as you call를 선택했습니다. 이 요금제는 무료로 1,000개까지 API 요청을 할 수 있으므로 초과되지 않는 이상 요금이 청구되지 않습니다. 원하는 요금제의 '구독'을 누르고, 결제 정보를 입력합니다.

구독결제 정보 입력
구독, 결제 정보 입력


실시간 날씨 데이터 수집


이 글에서 수집할 데이터는 '실시간 날씨 데이터'입니다. Current Weather Data의 API doc를 클릭하면 상세 페이지를 확인할 수 있습니다. API call 예시를 활용하여 데이터를 수집해 보겠습니다. 

API docAPI call
API call


첫 번째, API key가 필요합니다. API key는 상단의 My API keys에서 확인할 수 있습니다. key는 반드시 본인만 알고 있어야 합니다. 요청 횟수가 초과하면 비용이 발생하므로 조심해야 합니다. 

My API keys
My API keys


두 번째, 좌표가 필요합니다. 날씨를 확인하고 싶은 지역의 좌표를 확인합니다. 이 글에서는 '서울역'의 날씨를 확인하기 위해 좌표(37.55315, 126.972533)를 찾아놓았습니다. 좌표 외에 특정 도시 이름을 입력하여 데이터를 수집할 수도 있습니다. 2가지 방법 중 편리한 방법을 선택하여 사용하면 됩니다.

API key와 좌표가 준비됐다면, 이제 파이썬을 활용하여 데이터를 수집하겠습니다. 필요한 패키지인 requests를 import하고, 본인의 API key와 좌표를 입력한 url로 data를 출력합니다. 결과는 다음과 같습니다.

# i) 좌표

import requests

## OpenWeatherMap API KEY
api_key = 'YOUR_API_KEY' 

## 좌표
lat = 37.55315
lon = 126.972533

## API 요청
url = f'https://api.openweathermap.org/data/2.5/weather?lat={lat}&lon={lon}&appid={api_key}'
response = requests.get(url)

## JSON 데이터 파싱 & 데이터 출력
data = response.json()
data

data 출력 결과
data 출력 결과


반응형

도시 이름을 입력하여 데이터를 추출하는 방법은 다음과 같습니다. url를 city_name으로 변경하면 됩니다. 결과는 위의 형식과 동일합니다.

# ii) 도시

import requests

## OpenWeatherMap API KEY
api_key = 'YOUR_API_KEY' 

## 좌표
city_name = 'Seoul'

## API 요청
url = f'http://api.openweathermap.org/data/2.5/weather?q={city_name}&appid={api_key}'
response = requests.get(url)

## JSON 데이터 파싱 & 데이터 출력
data = response.json()
data

출력한 data에서 main 필드만 추출하는 방법은 다음과 같습니다. 이와 같이 파이썬을 활용하면 전세계 날씨 중 필요한 데이터, 필요한 도시에 대해 편리하게 사용할 수 있습니다.

import requests
import pandas as pd

## OpenWeatherMap API KEY
api_key = 'YOUR_API_KEY' 

## 좌표
city_name = 'Seoul'

## API 요청
url = f'http://api.openweathermap.org/data/2.5/weather?q={city_name}&appid={api_key}'
response = requests.get(url)

## JSON 데이터 파싱 & 데이터 출력
data = response.json()

# main 데이터 출력
print(data['main'])

# main 데이터프레임 변환
df = pd.DataFrame([data['main']])
df

main 출력 결과
main 출력 결과


 

반응형