# 模拟网络请求获取天气数据的Python脚本


背景介绍

在现代编程实践场景中,网络请求是获取实时数据的核心能力之一。本脚本通过Python实现一个简单的网络请求功能,模拟从天气API(如OpenWeatherMap)获取城市天气信息的场景。该脚本可独立运行,支持输入城市名称和日期,输出格式化为天气状况和温度,满足数据处理和网络请求的核心功能需求。

思路分析

  1. 需求分解
    脚本需实现两个核心功能:

    • 发送GET请求到指定天气API
    • 解析并输出JSON返回的天气数据
  2. 技术选型
    使用requests库发送HTTP请求,该库提供了高效的网络请求功能,支持JSON数据解析和响应处理。通过json模块处理JSON响应数据。

  3. 关键步骤

    • 构造请求URL格式:`https://api.openweathermap.org/data/2.5/weather?appid=your_app_id&lat=116.10&lon=34.05`
    • 解析JSON响应数据
    • 格式化输出结果

代码实现

import requests

def get_weather_data(city, date):
    # 构造请求参数
    params = {
        'city': city,
        'date': date
    }

    # 发送GET请求
    response = requests.get('https://api.openweathermap.org/data/2.5/weather', params=params)

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

    # 验证响应有效性
    if 'error' in data:
        print("请求失败:", data['error'])
        return None

    # 输出结果
    print(f"天气情况:{data['main']['temp']}°C")
    print("天气状况:{data['main']['humidity']}%")

    return data

# 示例使用
if __name__ == "__main__":
    # 输入参数
    city = "北京"
    date = "2023-10-05"

    result = get_weather_data(city, date)

    # 输出结果
    if result:
        print("成功获取天气数据")
        result['main']['temp'] = round(result['main']['temp'], 1)
        result['main']['humidity'] = round(result['main']['humidity'], 1)
        print(f"当前温度:{result['main']['temp']}°C,湿度:{result['main']['humidity']}%")
    else:
        print("请求失败,请检查参数是否正确")

总结

本脚本通过完整的网络请求功能实现了模拟天气数据获取的场景。核心功能包括:构造正确的API参数、发送HTTP请求、解析JSON响应数据、验证响应有效性,以及输出格式化结果。代码实现了独立运行的需求,支持本地环境部署,并通过注释说明实现思路。该脚本可直接运行,无需依赖外部服务,确保了数据处理和网络请求的核心能力。