背景介绍
在现代编程实践中,天气信息需求日益增加。无论是日常的生活规划、项目开发,还是自动化测试,获取精准的天气数据已成为关键任务。然而,直接获取天气数据往往面临数据格式不统一、API接口不稳定等问题。为此,我们设计了一个使用Python的HTTP请求脚本,能够从用户输入的城市名称或日期中解析出天气信息。
思路分析
- 输入处理:脚本接收用户输入的参数,例如城市名称或日期,通过命令行或输入流获取。
- HTTP请求:利用
requests库发送GET请求到天气数据API,例如`https://api.weatherapi.com/v1/nu/`。 - 数据解析:接收JSON响应后,通过
json.loads()函数解析数据,并提取关键字段(如温度、风速、天气状况等)。 - 异常处理:在请求过程中加入异常处理逻辑,防止出现网络错误或解析失败的情况。
代码实现
import requests
def fetch_weather_info(user_input):
try:
# 构造请求参数
url = "https://api.weatherapi.com/v1/nu/forecast"
params = {
"query": user_input
}
# 发送HTTP请求
response = requests.get(url, params=params)
# 处理响应
response.raise_for_status() # 如果请求失败,抛出异常
# 解析JSON数据
weather_data = response.json()
if not weather_data:
print("无法获取天气信息,请提供有效的输入参数。")
return None
# 提取天气数据
temperature = weather_data[0]["current"]["temp_c"]
weather_condition = weather_data[0]["current"]["condition"]
wind_speed = weather_data[0]["current"]["wind_speed"]
print(f"天气数据:温度 {temperature}℃,天气状况 {weather_condition},风速 {wind_speed} m/s")
return {
"temperature": temperature,
"weather_condition": weather_condition,
"wind_speed": wind_speed
}
except requests.exceptions.RequestException as e:
print("网络请求失败,请检查输入参数是否正确。")
return None
# 示例使用
if __name__ == "__main__":
user_input = input("请输入城市名称或日期(如 '北京' 或 '2023-08-08'):")
result = fetch_weather_info(user_input)
if result:
print("天气信息解析结果:")
result
总结
本脚本通过Python的requests库实现了对用户输入天气信息的解析,能够提取温度、天气状况和风速等关键参数。其优势在于实现简洁、可扩展性强,适合处理简单的天气信息请求。
代码说明:
– 使用requests.get()发送HTTP请求,参数为query,获取天气数据。
– 解析JSON响应,提取关键字段,输出结果。
– 异常处理机制,避免请求失败的情况。
通过该脚本,用户可以直接使用Python代码获取天气信息,提高工作效率。在实际应用中,可根据需要扩展参数或处理更多数据格式。