python实现AI聊天机器人详解流程
作者:编程简单学 发布时间:2022-12-11 23:57:37
前言
开始几天,我是使用很原始的方法,自己去获取天气预报截图,再手动发送给小姐姐。连续几天之后我一想:不对呀,我怎么说也是一个程序猿,怎么能用这么 low 的方式呢。
联想起之前看到的一个开源 python 库—— wxpy,一个非常强大的微信 api 调用类库,正好满足我当前的需要,那话不多说,开干。
任务分解
调用微信 api 发送简单消息
获取当日天气预报截图信息
设置定时任务
调用微信 api 发送简单消息
本程序主要是通过 wxpy 库使用的,参考其官网文档,我们需要做如下准备工作:
1.Python 环境(本人使用的是 mac 自带的 python2.7)
2.安装 wxpy 库
pip install -U wxpy -i "https://pypi.doubanio.com/simple/"(国内用户使用豆瓣的源)
复制代码
获取聊天对象,发送消息
我们先试着获取文件传输助手,拿它练练手
from wxpy import *# 初始化一个机器人对象bot = Bot()# 获取文件传输助手file_helper = bot.file_helper# 向文件传输助手发送消息file_helper.send('Hello')
复制代码
通过昵称获取指定微信好友
# 获取昵称为 『志明』,这边的昵称指你给的好友备注friend = bot.friends().search('志明')friend.send(u'Hello 志明') #在字符前面加上 u 为了避免编码转换的异常,因为存在中文
复制代码
获取当日天气预报截图信息
国内天气网的 api 很多,我找了一个简单易用的天气查询网站——中国天气
我的需求是把网页中红框圈起来的内容截取,转化成图片,一搜索还真的找个这么一个神器——webkit2jpg,官网地址
webkit2jpg
这是 linux 环境下,能够把网页内容转成图片的命令行工具,mac 可以直接通过 brew 安装
brew install webkit2png
复制代码
拿 google 主页练练手,在命令行输入如下命令,这边有个小问题,webkit2jpg 默认必须使用 https 的链接,需要手动修改一下 webkit2jpg 的程序,可以参考链接 参考链接
webkit2png http://www.google.com/
复制代码
可以在当前执行命令行的目录当中发现 google 主页图片
那我想要截取页面的某个部分转换成图片呢,webkit2jpg 完全 ok,查看使用文档之后发现它是可以传入 CSS选择器参数
通过 chrome 浏览器的调试工具,可以很容易的找到指定区域的网页元素所对应的选择器
来试试看通过选择器进行网页截图,在命令行输入如下指令,可以看到对应的网页截图
webkit2png --ignore-ssl-check --selector=#today http://www.weather.com.cn/weather1d/101020100.shtml\#search
复制代码
设置定时任务
万事俱备,只欠东风,我们来设定一个定时的 job,这边我是用的是 BlockingScheduler 库,非常简单易用
if __name__ == '__main__': from apscheduler.schedulers.blocking import BlockingScheduler sched = BlockingScheduler()
# 设置保活 job,这个 job 每 10 秒给我自己发送一条消息 # 让微信机器人长期处于一个在线的状态 sched.add_job(keep_online, 'interval', seconds=10) # 设置定时发送天气预报的任务,通过 cron 表达式,指定发送周期为周一至周五每天早上 6:30 sched.add_job(weather_notification, 'cron', day_of_week='1-5', hour=6, minute=30) sched.start()
复制代码
这边有个小技巧,由于首次启动微信聊天机器人需要扫码登录,因此 wxpy 提供了缓存功能,意味着可以让微信保持长期在线,不用重复扫码登录
# 实例化机器人对象时,指定 cache_path 参数启动缓存功能,qr_path 则是二维码路径bot = Bot(console_qr=2, cache_path=True, qr_path='wepy.pkl')
来源:https://blog.csdn.net/weixin_54556126/article/details/121273670


猜你喜欢
- 相信大家在学习python编程时绝对离不开数据库的连接,那么我们就用python来连接数据库实现一个简单的图书借阅系统。其实也很简单,就是在
- 临时表可能是非常有用的,在某些情况下,保持临时数据。最重要的是应该知道的临时表是,他们将当前的客户端会话终止时被删除。临时表中添加MySQL
- 一、情景 eg:查看一条数据的详情,需要跳转页面,并进行传值二、思路方式1:触发详情按钮时,Js获取到
- 近年,不论是正在快速增长的直播,远程教育以及IM聊天场景,还是在常规企业级系统中用到的系统提醒,对websocket的需求越来越大,对web
- auth模块简介auth模块是对登录认证方法的一种封装,之前我们获取用户输入的用户名及密码后需要自己从user表里查询有没有用户名和密码符合
- 这篇文章主要介绍了python处理RSTP视频流过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的
- 1、为图片加入水印功能 Dim Jpeg Set Jpeg = Server.Create
- 泛型,如果你学过Java ,应该对它不陌生吧。但你可能不知道在 Python 中(3.4+ ),也可以实现简单的泛型函数。在Python中只
- 机器A: select instance_name from v$instance; select name from v$database
- 一、文件操作前言:什么是计算机的流?"流"指的是在不同的输入/输出等设备(键盘、内存、显示器、音响等)之间进行传递数据。
- TypeScript打包 webpack整合通常情况下,实际开发中我们都需要使用构建工具对代码进行打包;TS同样也可以结合构建工具
- 本文实例为大家分享了wxPython分隔窗口的具体代码,供大家参考,具体内容如下1、分割窗口分隔窗口(wx.SplitterWindow)就
- 本文实例讲述了python随机生成指定长度密码的方法。分享给大家供大家参考。具体如下:下面的python代码通过对各种字符进行随机组合生成一
- 一、字符串与字节数组?字符串是 Go 语言中最常用的基础数据类型之一,本质上是只读的字符型数组,虽然字符串往往都被看做是一个整体,但是实际上
- 有没有想过用尺子来直接量网页上的区块间距,文字行高?屏幕标尺就是干这个的。这个功能非常适合F2E在调试样式尺寸的时候使用。打开屏幕标尺,屏幕
- 1. goland配置Dockerfile项目中新建Dockerfile文件配置Dockerfile在项目中新建Dockerfile 文件,
- 映射Go编程提供的一个重要的数据类型就是映射,唯一映射一个键到一个值。一个键要使用在以后检索值的对象。给定的键和值,可以在一个Map对象存储
- asp.net MVC中Action参数不只是一些基本类型,也支持实体参数。那么从客户端传来的数据如何映射或转换成实体对象呢?就是通过实体绑
- 这篇文章主要介绍的是关于JS的命名规范、注释规范以及框架开发的一些问题,首先来看看目录。目录1. 命名规范:介绍变量、函数、常量、构造函数、
- 一,*和.*的联系和区别。 1,在进行数值运行和数值乘矩阵,这两种没有区别,例如:a*b=a.*b; a*B=a.*B; B*a=B.*a