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
猜你喜欢
- 在C#中,程序采用了的驱动采用了事件驱动而不是原来的消息驱动,虽然.net框架提供的事件已经十分丰富,
- 1 环境操作系统:Windows 10Python版本:3.9.0Google Chrome 87.0.4280.88
- 关于浅拷贝和深拷贝想必大家在学习中遇到很多次,这也是面试中常常被问到的问题,借由这个时间,整理一下浅拷贝和深拷贝的关系先从一个简单的例子入手
- 一、python判断文件和文件夹是否存在、创建文件夹 >>> import os>>> os.
- 前言数据分析就是将数据以各种图表的形式展现给领导,供领导做决策用,因此熟练掌握饼图、柱状图、线图等图表制作是一个数据分析师必备的技能。Pyt
- 一、理解装饰器所有东西都是对象(函数可以当做对象传递)由于函数也是一个对象,而且函数对象可以被赋值给变量,所以,通过变量也能调用该函数。de
- 背景np.loadtxt()用于从文本加载数据。文本文件中的每一行必须含有相同的数据。***loadtxt(fname,dtype=<
- function geturl($url) { $ch = curl_init(); $timeout = 5; curl_setopt($
- PHP count_chars() 函数实例返回一个字符串,包含所有在 "Hello World!" 中使用过的不同字符
- 内容概要:print() 是一个常用函数。那么,您是否注意过,print() 会在显示当前语句后换行。如果遇到需要连续显示、不换行的情况,比
- 在Twinsen Liang的博客上看到一篇名为语义化单单的限定在html么?的文章,文中主要是提及了CSS的命名规则,仔细阅读后,我认为这
- <table border="1" cellpadding="0&quo
- 在通过拼组sql语句来实现数据插入的应用中,我们很有可能会遇到需要插入大型数据的情况,例如,在oracle中需要插入字节数超过4000的字段
- 如下所示:#ltp_data 字符串 写进777.txt1、def save(filename, contents): fh = open(
- 写这段代码的原因是昨天项目中遇到的一个问题。一同事要求 写一个效果要求鼠标掠过表格行该行颜色改变以突出显示。这个倒不难,那哥们直接为每个Tr
- 这篇文章主要介绍了python字符串替换re.sub()实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值
- 本教程为大家分享了win10下Python环境安装配置教程,供大家参考,具体内容如下1.在https://www.python.org/do
- 前言人脸识别在LWF(Labeled Faces in the Wild)数据集上人脸识别率现在已经99.7%以上,这个识别率确实非常高了,
- 因为最近公司有python项目维护,所以把python的基础入门的书整理一遍,因为有些忘记了,同时在看<<python编程>
- 在进行matplotlib画图的时候,经常会出现这个的报错,虽然知道是因为没有对应的字体的原因,但是,将字体下载后放到目标路径下,仍然没有办