API-интерфейс получения данных о погоде Python

Получайте информацию о погоде в реальном времени в Python, используя стандартные библиотеки. Изучите запросы API, преобразования JSON и макеты резервных копий.

Попробуйте в редакторе

Обзор

Интеграция сторонних API — важнейший навык для современных веб-разработчиков. Сборщики данных о погоде подключают программы Python напрямую к серверам телеметрии климата в реальном времени.

Обычно мы используем внешний модуль Requests, но стандартная библиотека Python предоставляет urllib.request, который работает «из коробки», не требуя установки зависимостей.

Этот интерактивный сценарий использует общедоступную конечную точку геокодирования с открытым доступом для получения координат и температуры, иллюстрируя циклы синтаксического анализа, кодирование URL-адресов и чтение потока JSON.

Код и вывод выполнения

Сценарий urllib стандартной библиотеки, запрашивающий общедоступные серверы телеметрии погоды.

import urllib.request
import json

def fetch_weather(city_lat, city_lon):
    # Free, open weather API (No authentication key needed)
    url = f"https://api.open-meteo.com/v1/forecast?latitude={city_lat}&longitude={city_lon}&current_weather=true"
    
    print(f"Connecting to Weather API for lat={city_lat}, lon={city_lon}...")
    
    try:
        req = urllib.request.Request(
            url, 
            headers={'User-Agent': 'PyRun Weather Client/1.0'}
        )
        
        with urllib.request.urlopen(req, timeout=5) as response:
            raw_data = response.read().decode('utf-8')
            weather_json = json.loads(raw_data)
            
            current = weather_json.get("current_weather", {})
            temp = current.get("temperature")
            wind = current.get("windspeed")
            
            print("Successfully retrieved weather telemetry!")
            print(f"  Current Temperature: {temp}°C")
            print(f"  Wind Speed:          {wind} km/h")
            
    except Exception as e:
        print(f"Could not retrieve weather details: {e}")

# Run fetch for Tokyo coordinates (lat: 35.6762, lon: 139.6503)
fetch_weather(35.6762, 139.6503)
Терминальный выход
Connecting to Weather API for lat=35.6762, lon=139.6503...
Successfully retrieved weather telemetry!
  Current Temperature: 22.4°C
  Wind Speed:          14.2 km/h

Пошаговая реализация

  • Добавление виджетов отображения погоды в пользовательские интерфейсы информационной панели
  • Написание автоматических сценариев cron, которые предупреждают пользователей о экстремальных температурных явлениях.
  • Освоение сетевых протоколов urllib и стандартных библиотек.

Часто задаваемые вопросы

Может ли этот сценарий работать в браузерном движкеPyRun?

Да, серверная часть браузераPyRunперехватывает urllib и запрашивает запросы сокетов, безопасно преобразуя их в запросы выборки на уровне браузера.

Что такое координаты широта и долгота?

Они представляют собой геолокационные координаты на Земле. Широта измеряет расстояние с севера на юг от экватора, а долгота измеряет расстояние с востока на запад от нулевого меридиана.

Связанные темы