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.
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}¤t_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/hTriể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.