# 使用Python获取城市天气信息的实践教程


背景介绍

随着城市化进程的加快,人们越来越依赖天气预报来规划日常生活。本项目旨在实现用户输入城市名称后,通过网络请求获取天气数据的功能。通过使用Python的requests库,我们能够实现基础的网络请求与数据解析,为用户提供简洁透明的天气信息展示。

思路分析

核心思路

  1. 网络请求:使用requests库发送GET请求到天气数据API,例如通过https://api.weatherapi.com/v1/ydx.json接口获取数据。
  2. 数据解析:从返回的JSON数据中提取温度、湿度、风速等关键信息,并将其格式化为用户易读的输出。
  3. 错误处理:在代码中添加异常处理机制,确保在API返回错误时能正确提示用户异常信息。

代码实现

import requests

def get_weather_info(city):
    try:
        # 设置请求头,避免重复请求
        headers = {
            "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.616.28 Safari/537.36"
        }

        # 发送GET请求
        response = requests.get(
            f"https://api.weatherapi.com/v1/ydx.json?query={city}",
            headers=headers,
            timeout=10
        )

        # 处理响应数据
        data = response.json()

        # 提取关键信息
        weather_info = {
            "温度": f"{data['data']['current']['temp']}/C",
            "湿度": f"{data['data']['current']['humidity']}%",
            "风速": f"{data['data']['current']['wind_speed']}/m/s"
        }

        # 输出天气信息
        print(f"当前天气:{weather_info['温度']} / 温度, {weather_info['湿度']} / 湿度, {weather_info['风速']} / 风速")

    except requests.exceptions.RequestException as e:
        print(f"请求失败: {e}")

总结

本项目展示了网络请求与数据处理的核心能力。通过使用Python的requests库,我们实现了城市天气信息的获取与输出,具备良好的可读性和可维护性。在整个实现过程中,掌握了如何处理网络请求的细节,例如设置请求头、处理超时异常,以及如何解析JSON数据中的天气信息。最终输出的功能能够在1~3天内完成,为后续开发提供了良好的基础。