Python实现微信自动提醒:基于石墨文档与Server酱的定时任务方案

周末不加班
周末不加班
发布时间:2026-10-13 | 8人浏览过
原创

本文介绍如何利用Python构建微信自动提醒系统。通过Selenium模拟登录石墨文档获取待办事项,结合APScheduler设置每日定时任务,并利用Server酱API将筛选后的当日任务推送到微信。方案包含登录模拟、数据解析、消息推送及运行监测完整流程,适用于个人效率管理。

近期工作内容繁杂,容易遗漏事务。尽管记录了备忘录,但常因忘记查看而失效。鉴于微信的高频使用特性,设计并实现了一套基于微信的提醒系统。核心逻辑是将待办事项存储于在线记事本,通过配置定时任务,每日清晨自动爬取文档内容,筛选出当日需处理的项目,并利用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). 模拟登录实现

通过爬虫提取待办事项时,发现在线记事本平台具备登录验证机制:

 

实现模拟登录的方式多样,此处采用Selenium进行自动化操作。在“手机号或邮箱”及“密码”输入框中填入账户凭证,点击“立即登录”按钮完成身份验证。部分核心实现代码如下:

 

3). 任务数据提取

登录成功后,需导航至存储待办事项的页面。利用selenium.webdriver对象的page_source属性可直接获取页面HTML源码,经解析后即可提取待办事项数据。具体代码如下:

 

实际使用中,记事本可能包含大量分散日期的事项,无需对全部历史数据进行提醒。优化策略是仅筛选并推送当日需处理的事项,以提升提醒效率。筛选逻辑的核心在于获取系统当前日期,并与各事项的待办日期进行逐一比对,代码实现如下:

 

2. 信息推送到微信

1). 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酱发送的提醒信息。

 

3. 定时任务配置与运行监测

1). 定时任务设置

为实现自动化提醒,需配置定时任务。此处选用APScheduler框架,该框架基于Quartz开发,提供多种调度器。由于任务在当前进程内执行,选择BlockingScheduler调度器,并通过add_job方法动态添加待执行任务。

APScheduler的基本用法较为直观:

 

  • entrance为主功能函数,负责爬取在线记事本数据、筛选当日待办事项,并通过Server酱推送到微信;
  • day_of_week指定任务在一周内的执行日期,0-6分别对应周一至周日,也可指定特定值,如‘0'表示仅在周一执行;
  • hour、minute和second分别指定任务执行的时、分、秒。这些参数既可指定具体数值,也可像day_of_week一样设置范围或执行间隔频率。

将程序部署至服务器后,调用start()方法启动调度器。如此,每日早上7:30即可在微信中收到当日待办事项的提醒。

2). 运行状态监测

为确保程序持续稳定运行,需建立监测机制。前文提及,Server酱通过GET请求推送信息,该请求返回JSON格式数据,示例为“{'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 相关产品和应用

全部下载

专题列表