点击蓝字 关注我们



第56课Flask网页搭建后,Tyree要打开浏览器才能看天气,还是不够方便。他想要的是“一睁开眼睛,手机上就有条消息告诉我今天几度、要不要带伞”。
邮件设置太麻烦,我们换一条更直接的路——微信推送。你只需要注册一个推送服务账号,获取一个Key,然后在代码里发一条HTTP请求,消息就会出现在你的微信上,不需要配置邮箱。
1
注册PushPlus获取Key
PushPlus是国内最常用的微信推送服务,免费、稳定、操作简单。


详细操作可参考下面:
1. 打开浏览器访问:`https://pushplus.plus`
2. 点击右上角“登录”,用微信扫码登录(第一次使用会自动注册)
3. 登录后,在首页左侧菜单找到“发送消息”,你会看到自己的“Token”(一串字母和数字)
4. 复制这个Token保存好,它就是你的“推送通道”
> 这个需要实名认证,认证需要支付认证费用。
2
第一条推送:发一条测试消息
我们下面用Python发一个HTTP请求,把你的消息推送到微信。

代码解释:
`requests.get(url)`:向PushPlus服务器发送一个GET请求,把消息内容和Token一起传过去
`data.get("code") == 200`:PushPlus返回的code为200表示成功
运行后,你的微信会收到一条服务通知(在“服务通知”公众号里,或PushPlus公众号里)
3
推送天气数据到微信
下面我们来把第53课采集的天气数据,用推送服务发到微信上。


代码解释:
get_latest_weather():打开
weather_history.csv,用 csv.DictReader 把每一行转成字典(键是表头,值是数据),list(reader) 把所有行读成一个列表,rows[-1] 取最后一行(最新一天的数据)。如果文件不存在或为空,返回 None。
send_push(title, content):把标题和内容拼接到PushPlus的URL中,发送GET请求,返回 True 或 False 表示推送是否成功。
response.json().get("code"):PushPlus返回的JSON数据中,code 为200表示成功。.get("code") 不会因为 code 不存在而报错。
如果 weather 有数据,就组装标题和内容(标题用 ☀️ 和日期,内容用换行排好版),调用 send_push 发送,根据返回值打印结果。
使用时要注意 token = "你的Token"这里要换成自己的Token,否则推送会失败!4
推送带图表的天气数据
PushPlus支持Markdown格式,可以把图表图片发到微信上。
第一步:先把图表上传到图床(或使用PushPlus的图片上传功能),获取图片链接。
简化方案:直接用文字+emoji展示天气数据,不用图片,避免图床配置麻烦。(代码看下面第一张图)


如果一定要带图片,可以先把 `weather.png` 上传到PushPlus的“文件管理”或使用第三方图床,然后把图片链接嵌入Markdown(具体代码看上面第二张图)
5
结合定时任务,每天早上自动推送
下面我们来把推送代码和 `schedule` 结合起来,每天早上8点自动推送到微信。代码如下图

每天推送的时间,可以根据自己的要求进行设置,主要看自己哪个时间点要看。
6
PushPlus常见问题
Q: 推送后微信收不到消息?
- 检查是否关注了“PushPlus”公众号
- 检查Token是否正确(不要有多余空格)
- 免费版每天200条,确认没有超限
Q: content太长怎么办?
- PushPlus有长度限制(免费版约2000字),天气数据完全够用
Q: 不想用PushPlus,有没有别的选择?
-Server酱:类似的微信推送服务,配置方式几乎一样
-Bark:iOS专用推送,不需要注册
7
课后小挑战
挑战1:在推送内容中增加一句话的穿衣建议(比如“今天较热,建议穿短袖”)。
挑战2:把推送时间改成早上7点,在你出门前先收到天气通知。
8
今天学到了什么
- PushPlus:微信推送服务,注册即可使用
- `requests.get(url)`:通过HTTP请求发送消息
- 把天气数据和推送结合起来,实现手机端接收
好了,今天课程先到这里。
下一节课:我们来做一个完整项目——天气数据全自动推送,把采集、存储、画图、推送全部串起来。
————热门推荐————
自学编程第51课:爬虫入门让Python帮你从网页“拿”数据
自学编程第一步:安装Python和Thonny 零基础图文教程
本系列教程持续更新,欢迎关注收藏

点赞
收藏
分享