大家好,爬虫是一项非常抢手的技能,收集、分析和清洗数据是数据科学项目中最重要的部分,本文介绍使用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('数据获取完成!!!')