爬虫系列实战:使用json解析天气数据

news/2024/7/19 11:14:50 标签: 爬虫

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


http://www.niftyadmin.cn/n/5333426.html

相关文章

Docker(一)简介和基本概念

作者主页: 正函数的个人主页 文章收录专栏: Docker 欢迎大家点赞 👍 收藏 ⭐ 加关注哦! 一、简介 本章将带领你进入 Docker 的世界。 什么是 Docker? 用它会带来什么样的好处? 好吧,让我们带…

QT基础篇(8)QT5模型视图结构

1.概述 QT5的模型视图结构主要包括模型(Model)、视图(View)和委托(Delegate)三个部分。 模型(Model):模型是数据的抽象表示,负责存储和管理数据。它可以是自…

【SpringBoot】SpringBoot 项目初始化方法

github 搜索 springboot 模板 github 搜索 springboot 模板,拉取现成代码。 SpringBoot 官方的模板生成器 SpringBoot 官方的模板生成器(https://start.spring.io/) 在 IDEA 开发工具中生成 这里我修改成阿里的镜像主要是要使用 Java8。 …

银河麒麟服务器操作系统搭建证书服务器并颁发可用于签名的证书步骤说明

银河麒麟服务器操作系统搭建证书服务器并颁发可用于签名的证书的方法与前面Centos7上(centos7 使用openssl 配置证书服务器并颁发证书(史上最详细版本)_centos phpinfo显示的openssl配置项为/etc/pki/tls/openssl.c-CSDN博客)是一…

python通过函数和常规类编写元类

1 python通过函数和常规类编写元类 python可以通过函数和常规类编写元类。函数和常规类之间通过type()创建类对象。 1.1 使用简单的工厂函数 python工厂函数定义了一个外部函数,它生成并返回一个嵌套函数,所以调用工厂函数就可以得到嵌套函数的引用。…

Android在系统界面上添加窗口

WindowManager.addView()是Android中的一个方法,用于在屏幕上添加一个窗口。它允许你在应用程序的上下文之外创建一个窗口,并将其显示在其他应用程序或系统界面上。 新建一个自定义View用于显示 class MyView JvmOverloads constructor(context: Contex…

封装日期时间组件

概述 该组件包含日期选择&#xff0c;任意时间选择、固定时间点选择。 子组件代码(date-picker.vue) <template><div id"date_picker"><el-popover placement"top" width"322" trigger"click" ref"popover&quo…

vue2上传图片image-conversion压缩

项目中涉及上传图片&#xff0c;如果大体积的一般都需要压缩&#xff0c;这里我使用image-conversion来压缩 其实在npm中使用已经说得很明白了&#xff0c;我这里记录一下跟element ui上传组件配合使用 1、安装image-conversion npm i image-conversion --save2、引入使用 2…