Trình tìm nạp API dữ liệu thời tiết Python

Tìm nạp chi tiết thời tiết theo thời gian thực bằng Python bằng thư viện chuẩn. Tìm hiểu các yêu cầu API, chuyển đổi JSON và mô hình dự phòng.

Thử trong Trình chỉnh sửa

Tổng quan

Tích hợp API của bên thứ ba là một kỹ năng quan trọng đối với các nhà phát triển phụ trợ web hiện đại. Trình tìm nạp thời tiết kết nối trực tiếp các chương trình Python với máy chủ đo từ xa khí hậu trực tiếp.

Thông thường, chúng ta sẽ sử dụng mô-đun `request` bên ngoài, nhưng thư viện chuẩn của Python cung cấp `urllib.request` có chức năng sẵn dùng mà không yêu cầu cài đặt các phần phụ thuộc.

Tập lệnh tương tác này sử dụng điểm cuối mã hóa địa lý truy cập mở, công khai để tìm nạp tọa độ và nhiệt độ, minh họa các vòng lặp phân tích cú pháp ngoại trừ, mã hóa URL và đọc luồng JSON.

Đầu ra mã & thực thi

Tập lệnh urllib thư viện chuẩn truy vấn các máy chủ đo từ xa thời tiết công cộng.

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)
Đầu ra thiết bị đầu cuối
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

Triển khai từng bước

  • Thêm tiện ích hiển thị thời tiết vào giao diện bảng điều khiển tùy chỉnh
  • Viết tập lệnh cron tự động cảnh báo người dùng về các sự kiện nhiệt độ khắc nghiệt
  • Nắm vững urllib và các giao thức mạng thư viện tiêu chuẩn

Câu hỏi thường gặp

Tập lệnh này có thể chạy trong công cụ trình duyệt củaPyRunkhông?

Có, chương trình phụ trợ trình duyệt củaPyRunchặn urllib và yêu cầu các yêu cầu ổ cắm, chuyển đổi chúng thành truy vấn tìm nạp cấp trình duyệt một cách an toàn.

Tọa độ vĩ độ và kinh độ là gì?

Chúng đại diện cho tọa độ định vị địa lý trên Trái đất. Vĩ độ đo khoảng cách bắc-nam từ Xích đạo, trong khi kinh độ đo khoảng cách đông-tây từ Kinh tuyến gốc.

Chủ đề liên quan