大家好,爬虫是一项非常抢手的技能,收集、分析和清洗数据是数据科学项目中最重要的部分,本文介绍使用json解析气象局天气数据。
在官网上获取天气数据信息,可以定义当前查询的位置,提取时间、温度、湿度、气压、风速等信息,并导入requests、matplotlib这些需要用到的库。
# 导入以下模块
import requests
import matplotlib.pyplot as plt
import pylab as pl
1.获取今日天气
调用api接口地址,获取天气数据接口,本文获取57494代表武汉的数据接口,进而获取json数据,并判断json请求是否成功。
def get_weather():
# 调用api接口地址
# 获取57494代表武汉的天气数据接口
url = "https://weather.cma.cn/api/now/57494"
# 获取json数据
json_datas = requests.get(url=url).json()
#判断json请求是否成功?
if json_datas.get("msg") == "success":
# 请求成功
json_location = json_datas.get("data").get("location")
# 位置信息
print('\n', '当前查询的位置'.center(50, '—'))
print("城市代码: " + json_location.get("id") + " 城市名称: " + json_location.get("name") +" 详细地址: " + json_location.get("path"));
# 当天天气信息
json_now_data = json_datas.get("data").get("now")
# 获取最新发布时间
now_time = "最新天气发布时间:" + str(json_datas.get("data").get("lastUpdate"))
print('\n',now_time.center(50, '—'))
print("\n温度: " + str(json_now_data.get("temperature")) + " 气压: " + str(json_now_data.get("pressure")) +" 湿度: " + str(json_now_data.get("humidity")))
print("\n风向: " + json_now_data.get("windDirection") + " 风力等级: " + json_now_data.get("windScale"))
else:
# 提示失败
print("服务器返回的数据,失败了!")
2.可视化显示温度曲线
解析json数据,获取历史最大和最小的温度数据,进行图表绘制,可视化展示温度数据,使用绘图库输出可视化结果。
def get_Max_temperature():
url = "https://weather.cma.cn/api/climate"
# 1传数据参数
params = {
"stationid": 57494
}
# 2.获取json数据
json_datas= requests.get(url=url, params=params).json()
#print(json_datas)
# 3.解析json数据,图表绘制
data=json_datas.get("data").get("data")
x = range(1, 13, 1) #显示12个月
# 4.获取最大和最小的温度数据
y = [maxTemp.get("maxTemp") for maxTemp in data]
y1 = [minTemp.get("minTemp") for minTemp in data]
pl.rcParams["font.sans-serif"] = ["SimHei"]
plt.figure(figsize=(70, 70), dpi=100)
plt.plot(x, y)
plt.plot(x, y1)
plt.xticks(x, ["{}月".format(i) for i in x])
plt.title("1981年-2010年月平均气温和降水")
plt.show()
if __name__ == "__main__":
get_weather()
get_Max_temperature()
print('数据获取完成!!!')