使用Python实现微信提醒备忘录功能


Posted in Python onDecember 04, 2018

最近工作比较繁杂,经常忘事,有时候记了备忘录结果却忘记看备忘录,但是微信是每天都会看的,于是就想到写 一个基于微信的提醒系统。总体思路是将待办事项记录到在线记事本,通过建立定时任务,每天早上爬取文档中记 录的待办事项,筛选出当日需要处理的事项,并通过server酱发送到自己微信。

1任何的记录与提取

1).任务记录

为了便于爬取,推荐使用网页版的在线记事本,现在这种工具很多,我选择“石墨文档”进行操作演示。记录内容的 格式可以根据自己的需求和爬虫自行确定,例如我在11月20日之前记录了一份以下样式的任务清单:

11月21日 9:30 吃饭

11月21日 12:30 睡觉

11月21日 14:00 打豆豆

11月22日 9:00 去南极旅游

11月23日 18:00 请豆豆吃火锅

2).模拟登录

使用爬虫来实现待办事项的提取,发现在线记事本是需要登录的:

使用Python实现微信提醒备忘录功能 

模拟登录的方法很多,这里我选择selenium模拟的方式进行登录操作,分别在“手机号或邮箱”和“密码”两栏输入自 己的登录名和密码,然后点击“立即登录”按钮完成登陆,部分核心代码如下:

使用Python实现微信提醒备忘录功能 

3).任务提取

登录后要指定跳转到记录自己待办事项的页面,然后使用selenium.webdriver对象的page_source属性可以很容易获取到页面的html,经过解析获取待办事项的数据信息。代码如下:

使用Python实现微信提醒备忘录功能 

当然,有时候我们会在记事本里记录很多需要办理的事项,执行日期也会比较分散,但是没必要每天对所有的待办事项进行提醒。对此,我们可以筛选出当天需要办理的事项进行提醒,这样效果无疑会更好一些。任务筛选的基本思路是获取系统当天日期,将它与各事项的待办日期逐一进行匹配,代码如下:

使用Python实现微信提醒备忘录功能 

2信息推送到微信

1).server酱

说到推送信息到微信,不得不介绍一个很方便的工具——server酱。说的简单一点,server酱就是一款能向目标微信账号发送信息的工具,她最大的有点就是功能简单、使用方便、轻量,使用server酱只需下面几个步骤:

  1.  登入:用GitHub账号登入网站,获得自己的SCKEY。 
  2. 绑定:通过微信扫码关注完成绑定。
  3.  发消息:往 http://sc.ftqq.com/SCKEY.send 发GET请求,就可以在微信里收到消息。

另外,server酱还提供了网页版的在线发送工具,可以进行体验和测试。值得一提的是,server酱的初始目的是通过手机监测服务器报警和日志,因此为避免程序出错,限制了每人每天发 送上限500条,相同内容5分钟内不能重复发送,不同内容一分钟只能发送30条。对于本系统来说,这个数据上限 绝对绰绰有余了。

2)信息推送

介绍完了server酱,就来试试她的效果吧。

首先我们要明确发送get请求的地址,即上面第三步中的URL,这个URL的关键取决于自己的SCKEY,之后要设置发 送信息的标题和内容,然后向目标URL发送请求即可完成信息的推送,顺利 的话马上就能在微信中收到server酱的信息提醒了。

使用Python实现微信提醒备忘录功能 

3定时任务与检测

1)定时任务

现在我们需要设置一个定时任务,这里使用APScheduler来实现。APScheduler是基于Quartz的一个python定时任务框架,提供了若干种类的调度器,由于我们的定时任务进在当前进程中执行,所以选择BlockingScheduler调度器,然后通过add_job来动态增加待执行的任务。

关于APScheduler,其实并不需要了解太多,因为它的基本用法非常简单:

使用Python实现微信提醒备忘录功能 

  • entrance为主功能函数,用于爬取在线记事本中的信息、筛选出当天需要办理的事项并通过server酱发送到 微信;
  • day_of_week表示定时任务在一周中的哪几天执行,0-6分别代表周一至周日,也可以指定某个值,比如‘0'表 示仅在周一执行;
  • hour、minute和second分别代表定时任务执行的时、分、秒,这几个参数既可以指定某个值也可以向day_of_week一样设置范围,甚至设置执行的间隔频率。

将程序放到服务中,通过start()方法启动定时任务调度器,这样在每天早上的7:30微信中就会收到当天待办事项 的有关提示。

2).运行监测

现在还有一个问题,就是要保证我们的程序始终处于正常运行的状态,上面说过,server酱通过向目标URL发送get请求的方式推送信息,而这个get请求是有返回值的,其格式为“{'errno': 0, 'errmsg': 'success', 'dataset': 'done'}”,其中若errno为0则表示发送成功,否则会在errmsg中给出错误信息。基于此,我们可以依托logging模块记录程序每天的运行状态,以便及时发现问题。相关代码如下:

logging.basicConfig(filename='log.log', format='%(asctime)s:%(message)s', level=logging.INFO) 
if response.json()['errno'] == 0: 
  logging.info('发送成功') 
else: 
  logging.warning('发送失败 %s' %response.json()['errmsg'])

总结

以上所述是小编给大家介绍的使用Python实现微信提醒备忘录功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Python 相关文章推荐
wxpython学习笔记(推荐查看)
Jun 09 Python
python处理二进制数据的方法
Jun 03 Python
Python连接DB2数据库
Aug 27 Python
Python 使用requests模块发送GET和POST请求的实现代码
Sep 21 Python
Python 字符串操作(string替换、删除、截取、复制、连接、比较、查找、包含、大小写转换、分割等)
Mar 19 Python
对python模块中多个类的用法详解
Jan 10 Python
Django实现跨域请求过程详解
Jul 25 Python
Python使用Tkinter实现转盘抽奖器的步骤详解
Jan 06 Python
Python注释、分支结构、循环结构、伪“选择结构”用法实例分析
Jan 09 Python
Python字典添加,删除,查询等相关操作方法详解
Feb 07 Python
python 子类调用父类的构造函数实例
Mar 12 Python
如何解决安装python3.6.1失败
Jul 01 Python
flask-restful使用总结
Dec 04 #Python
Python读取YUV文件,并显示的方法
Dec 04 #Python
对Python3+gdal 读取tiff格式数据的实例讲解
Dec 04 #Python
用python代码将tiff图片存储到jpg的方法
Dec 04 #Python
浅谈python下tiff图像的读取和保存方法
Dec 04 #Python
对python3新增的byte类型详解
Dec 04 #Python
对Python3中bytes和HexStr之间的转换详解
Dec 04 #Python
You might like
星际争霸中的对战模式介绍
2020/03/04 星际争霸
一个php作的文本留言本的例子(五)
2006/10/09 PHP
使用php实现截取指定长度
2013/08/06 PHP
php计算给定日期所在周的开始日期和结束日期示例
2017/02/06 PHP
laravel 修改.htaccess文件 重定向public的解决方法
2019/10/12 PHP
模拟jQuery中的ready方法及实现按需加载css,js实例代码
2013/09/27 Javascript
使用nodejs、Python写的一个简易HTTP静态文件服务器
2014/07/18 NodeJs
jquery实现在页面加载的时自动为日期插件添加当前日期
2014/08/20 Javascript
JavaScript strike方法入门实例(给字符串加上删除线)
2014/10/17 Javascript
ANGULARJS中用NG-BIND指令实现单向绑定的例子
2014/12/08 Javascript
使用mouse事件实现简单的鼠标经过特效
2015/01/30 Javascript
jQuery实时显示鼠标指针位置和键盘ASCII码
2016/03/28 Javascript
jQuery实现三级联动效果
2017/03/02 Javascript
Node.js 8 中的 util.promisify的详解
2017/06/12 Javascript
JS实现二维数组横纵列转置的方法
2018/04/17 Javascript
Element-ui之ElScrollBar组件滚动条的使用方法
2018/09/14 Javascript
小程序红包雨的实现示例
2019/02/19 Javascript
微信小程序的mpvue框架快速上手指南
2019/05/15 Javascript
Vue商品控件与购物车联动效果的实例代码
2019/07/21 Javascript
小程序识别身份证,银行卡,营业执照,驾照的实现
2019/11/05 Javascript
解决vue中el-tab-pane切换的问题
2020/07/19 Javascript
[47:03]Ti4第二日主赛事败者组 LGD vs iG 2
2014/07/21 DOTA
[56:00]2018DOTA2亚洲邀请赛 4.6 淘汰赛 VP vs TNC 第二场
2018/04/10 DOTA
Python中apply函数的用法实例教程
2014/07/31 Python
python UNIX_TIMESTAMP时间处理方法分析
2016/04/18 Python
matplotlib绘制符合论文要求的图片实例(必看篇)
2017/06/02 Python
python+selenium实现QQ邮箱自动发送功能
2019/01/23 Python
python如何实现复制目录到指定目录
2020/02/13 Python
django实现模型字段动态choice的操作
2020/04/01 Python
基于Python脚本实现邮件报警功能
2020/05/20 Python
pytorch查看模型weight与grad方式
2020/06/24 Python
HTML5探秘:用requestAnimationFrame优化Web动画
2018/06/03 HTML / CSS
在线购买世界上最好的酒:BoozeBud
2018/06/07 全球购物
外贸采购员岗位职责
2015/04/03 职场文书
有关朝花夕拾的读书笔记
2015/06/29 职场文书
教学副校长工作总结
2015/08/13 职场文书