资讯专栏INFORMATION COLUMN

海王必备,我用python写了一个微信机器人和她聊天之后把我拉黑了

lixiang / 2160人阅读

摘要:在我看来,很多人起床第一件事情就是看微信消息,既然这样,我就勉为其难每天早晨给小姐姐发送一则天气预报吧。联想起之前看到的一个开源库,一个非常强大的微信调用类库,正好满足我当前的需要,那话不多说,开干。

前言

事情是这样的,最近认识的一位小姐姐有每天早晨看天气预报的习惯。在我看来,很多人起床第一件事情就是看微信消息,既然这样,我就勉为其难每天早晨给小姐姐发送一则天气预报吧。

开始几天,我是使用很原始的方法,自己去获取天气预报截图,再手动发送给小姐姐。连续几天之后我一想:不对呀,我怎么说也是一个程序猿,怎么能用这么 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 很多,我找了一个简单易用的天气查询网站——中国天气

我的需求是把网页中红框圈起来的内容截取,转化成图片,一搜索还真的找个这么一个神器——webkit2png,官网地址

webkit2png

这是 linux 环境下,能够把网页内容转成图片的命令行工具,mac 可以直接通过 brew 安装

brew install webkit2png复制代码

拿 google 主页练练手,在命令行输入如下命令,这边有个小问题,webkit2png 默认必须使用 https 的链接,需要手动修改一下 webkit2png 的程序,可以参考链接 参考链接

webkit2png http://www.google.com/复制代码

可以在当前执行命令行的目录当中发现 google 主页图片

那我想要截取页面的某个部分转换成图片呢,webkit2png 完全 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://www.ucloud.cn/yun/123375.html

相关文章

  • 被「李笑来老师」拉黑之「JavaScript微博自动转发的脚本」

    摘要:本以为花一两个小时就能搞定这个微博自动转发的脚本,结果中途不停的踩坑折腾了大半天。还好早早的被李笑来老师拉黑。填坑过程打开浏览器中,先登录自己的微博,再进入李笑来老师的微博首页。然后手动转发一次微博,获取到转发时所产生的请求。 故事的背景如下图,李笑来 老师于10月19日在 知乎Live 开设 一小时建立终生受用的阅读操作系统 的讲座,他老人家看到大家伙报名踊跃,便在微博上发起了一个 ...

    BaronZhang 评论0 收藏0
  • Python清理微信僵尸粉,基于wxpy模块

    摘要:需求要想知道你微信哪些人删了你其实很简单,只需要给对方发送消息,提示好友已开启好友验证或者对方拒绝接收你的消息,则代表您已被对方删除或者拉入黑名单。 需求 要想知道你微信哪些人删了你其实很简单,只需要给对方发送消息,提示好友已开启好友验证或者对方拒绝接收你的消息,则代表您已被对方删除或者拉入黑名单。 但是,好友多的情况下,效率就低,尽管是建微信群和转账这种方法已经不实用,效率很低!那么...

    jeyhan 评论0 收藏0
  • “价值2个亿”的AI代码

    摘要:前两天朋友圈里看到一段号称价值一亿的代码可以智能应答,很厉害是不是源码极简版吗其实就是几个字符替换抖了个机灵,也顺便黑了把当下某些言必称的风气。方法一模块是一个生成自动应答的第三方库。那我这两段代码怎么也得值个亿吧,可以直接轮了。 前两天朋友圈里看到一段号称价值一亿的代码: showImg(https://segmentfault.com/img/remote/146000001743...

    Genng 评论0 收藏0
  • 一个初学编程的草根大叔用了一个月时间冲上周榜第二名!给想冲榜的后浪们谈谈小经验——

    摘要:今晨起来翻了翻排行榜,发现前天发的文章早已被挤出全站热榜,但却意外发现自己已经站上了作者周榜的亚军宝座。作为一个草根初习者一个月冲上周榜亚军实属不易,也不是我刻意准备想冲榜而全是意外。 今晨起来翻了翻CDSN排行榜,发现前天发的文章早已被挤出全站热榜,但却意外发现自己已经站上了作者周榜的亚军...

    _ivan 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<