用Python做一个愿望清单,2020年计划让小美女来督促吧!

2019年就要这样结束了,各位小伙伴们年初立的flag都实现了吗,还是说像下面图片中的这位仁兄一样被现实啪啪打脸呢?其实我们大部分人制定的“明年计划”还是比较靠谱的,只是在执行过程中由于各种原(借)因(口)不断拖延,慢慢就抛到脑后直至放弃,最终没能实现。

用Python做一个愿望清单,2020年计划让小美女来督促吧!

为了避免这种情况,我们可以写一个定时提醒系统,时不时的给自己打打鸡血,说不定加把劲,小目标就实现了呢。好了,闲话聊到这里,下面我们正式开工。



1


第一步,列出计划


制定切实可行的计划是工作的第一步,为了方便后期自动化读取,小编把列出的计划写在了石墨文档里,注意下图中的URL,这个就是写下明年计划的文档地址,在后面的步骤中会用到。

用Python做一个愿望清单,2020年计划让小美女来督促吧!


至于具体的目标麽…大家根据实际情况制定就好,目标太大实现不了也就没了动力,目标太弱可能不到半年就完成了,意义不大。



2


第二步,自动读取


这一步要实现的功能是让程度自己进到石墨文档中,自动获取刚辞我们提到的文档URL页面中的内容,具体方法就是写一个小爬虫。

但是,遇到了一个问题,那就是访问石墨文档是需要登录的(下图),好在它没有什么麻烦的验证环节。

用Python做一个愿望清单,2020年计划让小美女来督促吧!

小编使用的方法是selenium模拟登录,当然你也可以使用其他办法。selenium这个工具我们之前的文章中也是多次用到,不熟悉的朋友也不要担心,下面我们一起来讲解相关的代码,都是一些比较简单的操作。

首先初始化selenium.webdriver对象,同时设置好自己的用户名和密码、定义退出函数。

用Python做一个愿望清单,2020年计划让小美女来督促吧!


之后是自动登录模块,这一步最重要的就是获取用户名和密码的页面元素,等待这两个页面元素加载完毕后,先使用clear方法清空文本框中原有内容,再使用send_keys方法分别将用户名和密码写入对应的位置,最后模拟点击“立即登录”按键完成模拟登录的操作。

用Python做一个愿望清单,2020年计划让小美女来督促吧!

最后定义获取新年计划具体内容的函数,这一步可以算是最最基本的爬虫操作了,这里不再解释,大家直接看代码就好。


用Python做一个愿望清单,2020年计划让小美女来督促吧!

接着只要再加一个入口函数,就能实现自动登录+内容获取的功能了。

用Python做一个愿望清单,2020年计划让小美女来督促吧!



3


第三步,定期提醒


定期提醒是本篇文章的核心功能,一般来说我们现在常用的通讯工具非微信和钉钉莫属,但是微信做自动提醒门槛比较高,使用机器人还有被封号的危险,所以就使用钉钉吧。


1).钉钉机器人

钉钉的一大优势是官方支持机器人自动推送消息,而且配置起来很简单,通常只需要以下几步:

a).下载钉钉手机APP并登录;

b).建立只有自己的钉钉聊天群,如果你希望把消息同时推送给其他人,也可以把他们拉到群里来;

c).在群聊中添加机器人,类别就选最下方的“自定义”(下图);

用Python做一个愿望清单,2020年计划让小美女来督促吧!

d).在PC端登录钉钉,找到刚才建立的群聊机器人设置界面(下图),复制其中的webhook码备用。

经过以上步骤,钉钉消息推送机器人的配置就完成了,接下来让我们看看如何通过API自动发送消息。


2).发送消息

我们新建一个py文件,然后导入爬取石墨文档信息的python脚本,看看获取到的明年计划是什么形式的数据:

用Python做一个愿望清单,2020年计划让小美女来督促吧!

可以看到,获取到的信息是一个包含了计划内容的列表,也就是我们需要通过钉钉发送的核心消息。

虽然钉钉官方给出了消息发送的API,但是使用起来稍微有些麻烦,小编推荐使用DingtalkChatbot这个库来实现钉钉消息的自动发送。来看下面这段代码:

用Python做一个愿望清单,2020年计划让小美女来督促吧!

其中,webhook就是上面第四步中复制下来的内容。我们把获取到的missions列表转换成带换行符的字符串,然后通过send_text方法进行发送,is_at_all为True表示@所有人,来看看钉钉手机端收到的信息吧:

用Python做一个愿望清单,2020年计划让小美女来督促吧!

总的来说基本功能实现了,但是一年之内总是重复查看这条信息,估计用不了多久自己就烦了。所以,要不要考虑对接收到的消息进行一些修饰,比如说…配个小姐姐养养眼?


4


第四步,配个美女


我们刚才提到的用于发送钉钉消息的DingtalkChatbot库,除了普通文本之外还可以发送Markdown格式的消息,这就意味着我们可以在待发送的消息中进行字体设置、添加超链接、图片等操作,这样一来在消息中添加美女图片就简单了。

这里需要注意一点,Markdown消息中引用的图片地址必须是在网络中能直接访问的,不能是本地图片。

那么美女图片要从哪里获取呢,这个网上可真是一搜一大把了,小编就以plmm这个网站为例进行演示吧。

用Python做一个愿望清单,2020年计划让小美女来督促吧!

通过简单的页面分析,很轻易就能获取大量的美眉图片原地址,我们需要做的只是从中随机选出一张嵌入到待发送消息中。

例如,网站封面轮流滚动的7张图片会定期更换,我们可以每次从这几张图片中随机选取一张图片,这样可以保证每次选取的配图大概率是不一样的,从而保持新鲜感。通过分析页面,可以确定这几张图片的URL格式相对比较规范。

下面我们就开始尝试通过DingtalkChatbot自动发送Markdown格式的信息,为了讲解方面还是先看代码:

用Python做一个愿望清单,2020年计划让小美女来督促吧!

上面这段就是钉钉自动发送Markdown格式消息的完整代码,相对于上一段代码,此处着重对Markdown信息中的字体、图片等内容进行了设置,然后通过send_markdown方法进行了发送。来看下收到的提醒信息样式:

用Python做一个愿望清单,2020年计划让小美女来督促吧!

这下看上去是不是美观多了?你可以根据实际情况设置每周或者每月向自己发送提醒消息,每次都会有不同的美眉督促自己去完成计划。


此外还可以把记录新年计划的文档地址关联到标题中,这样一来如果某项计划完成了,可以直接点进去把该项任务删除掉以避免重复提醒,前提是你的钉钉中安装了石墨应用。



好了~今天的分享就到这里,项目中涉及的所有代码全都贴在了文章之中,有兴趣的朋友们可以自己尝试构建这个系统。最后,祝愿我们在2020年都能顺利实现自己的小目标。

另外,很多小伙伴说光看我们的文章不过瘾,我们也在陆续同步一些趣味的案例视频+源码在B站,尝鲜的可以点击阅读原文看哦!


获取干货源码,阅读更多有趣的案例,也可以直接去微信公众号【菜鸟学Python】获取。
菜鸟学Python » 用Python做一个愿望清单,2020年计划让小美女来督促吧!