10分钟教你用Python打造微信天气预报机器人

简介: 10分钟教你用Python打造微信天气预报机器人

前言

微信图片_20220421152856.png

最近武汉的天气越来越恶劣了。动不动就下雨,所以,拥有一款好的天气预报工具,对于我们大学生来说,还真是挺重要的了。好了,自己动手,丰衣足食,我们来用Python打造一个天气预报的微信机器人吧。


网络异常,图片无法展示
|

效果展示

效果如下:

后台登录

微信图片_20220421152903.jpg


收到天气预报消息:

微信图片_20220421152906.jpg


环境配置

Python版本:3.6.0

系统平台:Windows 10 X64


相关模块:

json模块;

requests模块;

itchat模块;

以及一些Python自带的模块。


获取天气

主要原理很简单,找一个天气的API接口(这里我们使用的是http://api.map.baidu.com/telematics/v3/weather?location=%s&output=json&ak=TueGDhCvwI6fOrQnLM0qmXxY9N0OkOiQ&callback=?),使用requests发起请求,接受返回的结果,用python中内置的包json. 将json字符串转换为python的字典或列表,然后从字典中取出数据。


具体可以看代码:

1    city = input('请输入要查询的城市名称:')
 2
 3    url = 'http://api.map.baidu.com/telematics/v3/weather?location=%s&output=json&ak=TueGDhCvwI6fOrQnLM0qmXxY9N0OkOiQ&callback=?'%city
 4    # 使用requests发起请求,接受返回的结果
 5    rs = requests.get(url)
 6    # 使用loads函数,将json字符串转换为python的字典或列表
 7    rs_dict = json.loads(rs.text)
 8    # 取出error
 9    error_code = rs_dict['error']
10    # 如果取出的error为0,表示数据正常,否则没有查询到结果
11    if error_code == 0:
12        # 从字典中取出数据
13        results = rs_dict['results']
14        # 根据索引取出天气信息字典
15        info_dict = results[0]
16        # 根据字典的key,取出城市名称
17        city_name = info_dict['currentCity']
18        # 取出pm值
19        pm25 = info_dict['pm25']
20        print('当前城市:%s  pm值:%s'%(city_name,pm25))
21        # 取出天气信息列表
22        weather_data = info_dict['weather_data']
23        # for循环取出每一天天气的小字典
24        for weather_dict in weather_data:
25            # 取出日期,天气,风级,温度
26            date = weather_dict['date']
27            weather = weather_dict['weather']
28            wind = weather_dict['wind']
29            temperature = weather_dict['temperature']


注释很明了。相信大家都能get it!

发送天气预报

在获取到天气预报的数据以后,接下来就是通过itchat模块把信息发送到我们的微信上面了。原理也很简单,先扫码登录我们的微信机器人,然后通过备注名获取要发送的好友,send过去就OK啦。

具体看下面代码:

1# nickname = input('please input your firends\' nickname : ' )
2            #   想给谁发信息,先查找到这个朋友,name后填微信备注即可
3            # users = itchat.search_friends(name=nickname)
4            users = itchat.search_friends(name='起风了')  # 使用备注名来查找实际用户名
5            # 获取好友全部信息,返回一个列表,列表内是一个字典
6            print(users)
7            # 获取`UserName`,用于发送消息
8            userName = users[0]['UserName']
9            itchat.send(date+weather+wind+temperature, toUserName=userName)


说说怎么实现每天定时预报:

可以在程序加个while(True),然后每天定时获取天气,send过去。当然,你最好有一天云主机,把程序挂在主机上面就OK。


另一种实用的思路是:

收取消息关键字,然后回复天气。这个给大家思考实现啦。



完整代码

完整代码如下:

1# 天气预告
 2# url 统一资源定位符
 3# windows + r  cmd 打开命令行工具 输入pip install requests
 4# 引入 requests
 5import requests
 6# 引入python中内置的包json. 用来解析和生成json数据的
 7import json
 8import itchat
 9
10
11def weather_main():
12    city = input('请输入要查询的城市名称:')
13
14    url = 'http://api.map.baidu.com/telematics/v3/weather?location=%s&output=json&ak=TueGDhCvwI6fOrQnLM0qmXxY9N0OkOiQ&callback=?'%city
15    # 使用requests发起请求,接受返回的结果
16    rs = requests.get(url)
17    # 使用loads函数,将json字符串转换为python的字典或列表
18    rs_dict = json.loads(rs.text)
19    # 取出error
20    error_code = rs_dict['error']
21    # 如果取出的error为0,表示数据正常,否则没有查询到结果
22    if error_code == 0:
23        # 从字典中取出数据
24        results = rs_dict['results']
25        # 根据索引取出天气信息字典
26        info_dict = results[0]
27        # 根据字典的key,取出城市名称
28        city_name = info_dict['currentCity']
29        # 取出pm值
30        pm25 = info_dict['pm25']
31        print('当前城市:%s  pm值:%s'%(city_name,pm25))
32        # 取出天气信息列表
33        weather_data = info_dict['weather_data']
34        # for循环取出每一天天气的小字典
35        for weather_dict in weather_data:
36            # 取出日期,天气,风级,温度
37            date = weather_dict['date']
38            weather = weather_dict['weather']
39            wind = weather_dict['wind']
40            temperature = weather_dict['temperature']
41            print('%s %s %s %s'%(date,weather,wind,temperature))
42
43            # nickname = input('please input your firends\' nickname : ' )
44            #   想给谁发信息,先查找到这个朋友,name后填微信备注即可
45            # users = itchat.search_friends(name=nickname)
46            users = itchat.search_friends(name='起风了')  # 使用备注名来查找实际用户名
47            # 获取好友全部信息,返回一个列表,列表内是一个字典
48            print(users)
49            # 获取`UserName`,用于发送消息
50            userName = users[0]['UserName']
51            itchat.send(date+weather+wind+temperature, toUserName=userName)
52
53            print('succeed')
54
55    else:
56        print('没有查询到天气信息')
57
58
59itchat.auto_login()
60weather_main()
相关文章
|
23天前
|
人工智能 机器人 API
搞定!微信接入DeepSeek打造聊天机器人,1行代码就行!
程序员晚枫分享了一个有趣的Python项目,将DeepSeek大模型接入微信,实现自动聊天。通过PyOfficeRobot库,仅需1行代码即可完成接入,打造AI聊天机器人。该项目基于Windows API操作微信,目前仅支持Windows系统。用户需填写好友名称和API Key,轻松体验AI对话。此外,PyOfficeRobot还支持其他大模型如阿里通义、智谱等。欢迎尝试并参与改进开源项目。
412 81
搞定!微信接入DeepSeek打造聊天机器人,1行代码就行!
|
27天前
|
人工智能 安全 机器人
LangBot:无缝集成到QQ、微信等消息平台的AI聊天机器人平台
LangBot 是一个开源的多模态即时聊天机器人平台,支持多种即时通信平台和大语言模型,具备多模态交互、插件扩展和Web管理面板等功能。
546 14
LangBot:无缝集成到QQ、微信等消息平台的AI聊天机器人平台
|
1月前
|
人工智能 开发框架 机器人
AstrBot:轻松将大模型接入QQ、微信等消息平台,打造多功能AI聊天机器人的开发框架,附详细教程
AstrBot 是一个开源的多平台聊天机器人及开发框架,支持多种大语言模型和消息平台,具备多轮对话、语音转文字等功能。
2848 15
AstrBot:轻松将大模型接入QQ、微信等消息平台,打造多功能AI聊天机器人的开发框架,附详细教程
|
3月前
|
Python
自动化微信朋友圈:Python脚本实现自动发布动态
本文介绍如何使用Python脚本自动化发布微信朋友圈动态,节省手动输入的时间。主要依赖`pyautogui`、`time`、`pyperclip`等库,通过模拟鼠标和键盘操作实现自动发布。代码涵盖打开微信、定位朋友圈、准备输入框、模拟打字等功能。虽然该方法能提高效率,但需注意可能违反微信使用条款,存在风险。定期更新脚本以适应微信界面变化也很重要。
266 61
|
1月前
|
弹性计算 小程序 UED
|
6月前
|
人工智能 数据可视化 API
10 分钟构建 AI 客服并应用到网站、钉钉或微信中测试评
10 分钟构建 AI 客服并应用到网站、钉钉或微信中测试评
183 2
|
3月前
|
Android开发 开发者 Python
通过标签清理微信好友:Python自动化脚本解析
微信已成为日常生活中的重要社交工具,但随着使用时间增长,好友列表可能变得臃肿。本文介绍了一个基于 Python 的自动化脚本,利用 `uiautomator2` 库,通过模拟用户操作实现根据标签批量清理微信好友的功能。脚本包括环境准备、类定义、方法实现等部分,详细解析了如何通过标签筛选并删除好友,适合需要批量管理微信好友的用户。
143 7
|
4月前
|
机器学习/深度学习 JSON API
Python编程实战:构建一个简单的天气预报应用
Python编程实战:构建一个简单的天气预报应用
161 1
|
6月前
|
人工智能 运维 负载均衡
10 分钟构建 AI 客服并应用到网站、钉钉或微信中
《10分钟构建AI客服并应用到网站、钉钉或微信中》的解决方案通过详尽的文档和示例代码,使具有一定编程基础的用户能够快速上手,顺利完成AI客服集成。方案涵盖高可用性、负载均衡及定制化选项,满足生产环境需求。然而,若文档不清晰或存在信息缺失,则可能导致部署障碍。实际部署中可能遇到网络、权限等问题,需逐一排查。云产品的功能、性能及操作配置便捷性直接影响解决方案效果,详尽的产品手册有助于快速解决问题。总体而言,该方案在各方面表现出色,值得推荐。
|
5月前
|
JSON 机器人 API
详解如何使用 Python 操作 Telegram(电报)机器人(一)
详解如何使用 Python 操作 Telegram(电报)机器人(一)
1105 8

热门文章

最新文章

推荐镜像

更多