系列文章目录
前言
前面简单学习了如何发送HTTP请求给BOT,现在简单给机器人做一个天气预报的推送
一、高德地图API
这里选择了高德地图的免费版Web服务API,高德免费版每天提供天气预报30W次的调用,足够自己个人开发的使用了
获取高德提供的天气预报信息,我们需要经历下面三个步骤
- 进入高德开放平台申请”web服务 API”密钥(Key)
- 拼接HTTP请求URL
- 接收HTTP请求返回的数据,解析数据
API的Key申请流程就不多说了,点击上面的链接进去很容易看到入口,申请后拿到自己的key
那么接下来,就用前面学的request能力来获取天气信息
import requests
def get_weather():
# 替换为你想要请求的URL,注意拼接自己的key;city可以换自己想查询的城市编号;output输出形式可以自己修改为XML或JSON
url = 'https://restapi.amap.com/v3/weather/weatherInfo?key=“复制自己的key”&city=310104&output=JSON'
response = requests.get(url)
#这里需要返回response的json类型,因为response会自动把数据变成text类型
return response.json()
print(get_weather())
可以看到console返回的是一个json格式的数据,如果上面不返回response.json()的话,这里就是文本类型,对于数据的处理会很麻烦
{
'status': '1',
'count': '1',
'info': 'OK',
'infocode': '10000',
'lives': [
{
'province': '上海',
'city': '徐汇区',
'adcode': '310104',
'weather': '晴',
'temperature': '19',
'winddirection': '东',
'windpower': '≤3',
'humidity': '68',
'reporttime': '2024-03-16 16:31:35',
'temperature_float': '19.0',
'humidity_float': '68.0'
}
]
}
二、机器人发送天气预报
1.整理想要的天气信息
可以看到上面web返回的信息有些是我们不需要的,所以我们可以直接返回lives内的天气信息,代码如下:
import requests
def get_weather():
# 替换为你想要请求的URL,注意拼接自己的key;city可以换自己想查询的城市编号;output输出形式可以自己修改为XML或JSON
url = 'https://restapi.amap.com/v3/weather/weatherInfo?key=“复制自己的key”&city=310104&output=JSON'
response = requests.get(url)
#这里需要返回response的json类型,因为response会自动把数据变成text类型
return response.json()['lives'][0]
print(get_weather())
这样我们最终能获得下面的字典,使用更方便
{
'province': '上海',
'city': '徐汇区',
'adcode': '310104',
'weather': '晴',
'temperature': '19',
'winddirection': '东',
'windpower': '≤3',
'humidity': '68',
'reporttime': '2024-03-16 16:31:35',
'temperature_float': '19.0',
'humidity_float': '68.0'
}
2.机器人推送
然后我们将天气预报用机器人推送出去,代码如下:
import requests
import json
def get_weather():
# 替换为你想要请求的URL,注意拼接自己的key;city可以换自己想查询的城市编号;output输出形式可以自己修改为XML或JSON
url = 'https://restapi.amap.com/v3/weather/weatherInfo?key=复制自己的key&city=310104&output=JSON'
response = requests.get(url)
#这里需要返回response的json形式,因为response会自动把数据变成文本形式
return response.json()['lives'][0]
weather_info=get_weather()
print(weather_info)
webhook = "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=复制自己的webhook"
header = {
"Content-Type": "application/json",
"Charset": "UTF-8"
}
data ={
"msgtype": "text",
"text": {
"content": '上海市徐汇区天气预报\n天气:'+weather_info['weather']+'\n温度:'+weather_info['temperature']+'\n天气更新时间:'+weather_info['reporttime'],
}
}
data = json.dumps(data)
requests.post(url=webhook, data=data, headers=header)
可以看到机器人成功推送信息
文章来源:https://www.toymoban.com/news/detail-857433.html
总结
这样就简单完成了机器人播报天气,想做未来天气预报的话,只需要将发送到API的url多拼接一个字段:extensions,将其设置为all就能返回未来几天的天气信息了文章来源地址https://www.toymoban.com/news/detail-857433.html
到了这里,关于企微机器人推送天气预报的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!