Python 天気データ API フェッチャー

標準ライブラリを使用して、Python でリアルタイムの天気の詳細を取得します。 API リクエスト、JSON 変換、モック フォールバックについて学びます。

エディターで試してみる

概要

サードパーティ API の統合は、現代の Web バックエンド開発者にとって重要なスキルです。天気フェッチャーは、Python プログラムをライブ気候テレメトリ サーバーに直接接続します。

通常、外部の `requests` モジュールを使用しますが、Python の標準ライブラリには、依存関係のインストールを必要とせずにすぐに機能する `urllib.request` が用意されています。

このインタラクティブ スクリプトは、公開されたオープンアクセスのジオコーディング エンドポイントを使用して座標と温度を取得し、try-excel 解析ループ、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 をインターセプトしてソケット リクエストを要求し、ブラウザ レベルのフェッチ クエリに安全に変換します。

緯度と経度の座標とは何ですか?

これらは地球上の地理位置座標を表します。緯度は赤道からの南北の距離を測定し、経度は本初子午線からの東西の距離を測定します。

関連トピック