企微机器人推送天气预报

系列文章目录



前言

前面简单学习了如何发送HTTP请求给BOT,现在简单给机器人做一个天气预报的推送


一、高德地图API

这里选择了高德地图的免费版Web服务API,高德免费版每天提供天气预报30W次的调用,足够自己个人开发的使用了
在这里插入图片描述

获取高德提供的天气预报信息,我们需要经历下面三个步骤

  1. 进入高德开放平台申请”web服务 API”密钥(Key)
  2. 拼接HTTP请求URL
  3. 接收HTTP请求返回的数据,解析数据

API的Key申请流程就不多说了,点击上面的链接进去很容易看到入口,申请后拿到自己的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)

可以看到机器人成功推送信息
在这里插入图片描述


总结

这样就简单完成了机器人播报天气,想做未来天气预报的话,只需要将发送到API的url多拼接一个字段:extensions,将其设置为all就能返回未来几天的天气信息了

  • 10
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值