Python实现天气信息查询

这次使用心知天气的API来实现天气信息的查询,具体会调用当前天气实况和天气预报两个API。代码如下:

import ssl
from urllib import request, parse
import json

def currentWeather():
    params = parse.urlencode({
        'key': 你的心知天气key,
        'location': 'shanghai',
        'language': 'zh-Hans',
        'unit': 'c'
    })
    ssl._create_default_https_context = ssl._create_unverified_context
    gcontext = ssl._create_unverified_context()
    req = request.Request('{api}?{params}'.format(api='https://api.seniverse.com/v3/weather/now.json', params=params))
    response = request.urlopen(req, context=gcontext).read().decode('UTF-8')
    data = json.loads(response)
    weather = data["results"][0]["now"]["text"]
    temperature = int(data["results"][0]["now"]["temperature"])
    msg = "上海当前天气:" + weather + ",气温:" + str(temperature) + "°C"
    return msg


def forecastWeather(days):
    params = parse.urlencode({
        'key': '你的心知天气key',
        'location': 'shanghai',
        'language': 'zh-Hans',
        'unit': 'c',
        'start': days,  # 查询开始日期 (0-今天,1-明天,2-后天)
        'days': 1  # 查询几天
    })

    ssl._create_default_https_context = ssl._create_unverified_context
    gcontext = ssl._create_unverified_context()
    req = request.Request('{api}?{params}'.format(api='https://api.seniverse.com/v3/weather/daily.json',
                                                  params=params))
    response = request.urlopen(req, context=gcontext).read().decode('UTF-8')
    data = json.loads(response)
    weather = data["results"][0]["daily"][0]["text_day"]
    high = int(data["results"][0]["daily"][0]["high"])
    low = int(data["results"][0]["daily"][0]["low"])
    if days == 0:
        msg = '上海今日天气预报:'+weather + ',最高温度:' + str(high) +  '°C,最低温度:' + str(low) + '°C'
    elif days == 1:
        msg = '上海明天天气预报:'+weather + ',最高温度:' + str(high) +  '°C,最低温度:' + str(low) + '°C'
    elif days == 2:
        msg = '上海后天天气预报:'+weather + ',最高温度:' + str(high) +  '°C,最低温度:' + str(low) + '°C'
    return msg

current = currentWeather()
print(current)

forecast = forecastWeather(1)
print(forecast)

上面代码的执行结果如下:

进一步说下这两个接口的调用参数。

1.location:查询具体的城市名字,显示的就是对应城市的天气。

2.language:显示的语言,默认是zh-Hans(简体中文),其他还支持12中语言或字体,具体可以参看官网产品文档。

3.unit:温度单位,默认是c(摄氏度),还可以改成f(华氏)

以上三个参数在天气实况和天气预报接口中都包含。下面2个只在天气预报接口中。

4.start:天气预报起始时间,默认值是0,<0是今天以前,>0是今天以后,也可以输入具体的日期如2015/10/1。

5.days:输入数字,比如3,根据权限的允许最多天数,显示对应的几天预报。免费版的测下来是3天。

调整这些参数,你可以根据自己的需要来获取更多的天气信息。

接下来,我要在rasa的actions.py中调用我写的这两个函数,并最终实现语音助手查询天气信息的功能。相关代码我会在我的公众号“天飓”发布,感兴趣的朋友欢迎关注“天飓”。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

天飓

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值