调用万维易源API实现天气预测

1. 作者介绍

房庚晨,男,西安工程大学电子信息学院,22级研究生
研究方向:机器视觉与人工智能
电子邮件:[email protected]

张思怡,女,西安工程大学电子信息学院,2022级研究生,张宏伟人工智能课题组
研究方向:机器视觉与人工智能
电子邮件:[email protected]

2. 关于理论方面的知识介绍

2.1 天气预测简介

天气预测就是应用大气变化的规律,根据当前及近期的天气形势,对未来一定时期内的天气状况进行预测。
天气预测在多个方面有着极大的作用,例如:干旱检测,农业与生产计划,航空工业和个人出行等等。

2.2 预测方法

(1)天气学预报方法(或称天气图方法):
是以天气图为主要工具,配合卫星云图、雷达图等,用天气学的原理来分析和研究天气的变化规律,从而制作天气预报的方法。这种方法主要用于制作短期预报。
(2)数值预报方法(又称动力学预报方法):
是利用大型、快速的电子计算机求解描述大气运动的动力学方程组来制作天气预报的方法。这种方法可用于制作短期预报,也可做中、长期预报。近几年还开始用来做气候预报。
(3)统计预报方法:
采用大量的、长期的气象观测资料,根据概率统计学的原理,寻找出天气变化的统计规律,建立天气变化的统计学模型来制作天气预报的方法。这种方法主要用于制作中、长期预报和气象要素预报。

3. 代码实现

3.1 需要安装的包

python3.6.5
需要引入requests包 :运行终端->进入python/Scripts ->输入:pip install requests

3.2 部分代码

from ShowapiRequest import ShowapiRequest
r=ShowapiRequest("http://route.showapi.com/9-9","1437460","04e4f362e2ae447eb22e7eedcdd0d799" )  #查询网址和appid和secret
r.addBodyPara("areaCode","")
r.addBodyPara("area","西安")  #查询地址
res = r.post()
print(res.text) # 返回信息

子函数ShowapiRequest代码 
import requests
from urllib import parse
#全局请求头
files = {
    
    }
headers = {
    
    }
body = {
    
    }
timeouts = {
    
    }
resHeader = {
    
    }

class ShowapiRequest:
    def __init__(self, url, my_appId, my_appSecret):
        self.url = url
        self.my_appId = my_appId
        self.my_appSecret = my_appSecret
        body["showapi_appid"] = my_appId
        body["showapi_sign"] = my_appSecret
        headers["User-Agent"] = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2427.7 Safari/537.36"

    def addFilePara(self, key, value_url):
        files[key] = open(r"%s "% (value_url), 'rb')
        return self

    def addHeadPara(self, key, value):
        headers[key] = value
        return self

    def addBodyPara(self, key, value):
        body[key] = value
        return self
    #设置连接时间和读取时间
    def setTimeout(self, connecttimout, readtimeout):
        timeouts["connecttimout"] = connecttimout
        timeouts["readtimeout"] = readtimeout
        return self


    def get(self):
        get_url = self.url + "?" + parse.urlencode(body)
        if not timeouts:
            res = requests.get(get_url, headers=headers)
        else:
            timeout = (timeouts["connecttimout"], timeouts["readtimeout"])
            res = requests.get(get_url, headers=headers, timeout=timeouts)
        return res

    def post(self):
        if not timeouts:
            res = requests.post(self.url, files=files, data=body, headers=headers)
        else:
            timeout = (timeouts["connecttimout"], timeouts["readtimeout"])
            res = requests.post(self.url, files=files, data=body, headers=headers, timeout=timeout)
        return res



3.3 实验结果

在这里插入图片描述

在这里插入图片描述
实验结果显示当前日期以,地址以及天气情况。

猜你喜欢

转载自blog.csdn.net/m0_37758063/article/details/131294635