作者丨Frank Andrade
译者丨王德朕
如果你正在学习Python,那应该尝试在日常任务中实现自动化。这个过程中不仅能通过实践已经掌握的知识来继续学习Python,而且会让你看到努力是可以得到回报的。
最近,由于缺乏时间,我经常将工作任务用自动化实现,这里多亏我有5个新项目,我将它们分为初级、中级和高级。你会发现每个项目的完整脚本和教程地址,此外,我还为每个项目布置了一个挑战任务,用于测试你的Python能力。
微软Word自动化 (初级项目)
你有多少次不得不使用Word来创建求职信、合同协议、简历或报告呢?如果你数不过来,那这个项目就是为你准备的。
在这个项目中,我们需要使用Python和一个名为docxtpl 的库来自动生成Word文档,为此,需要准备一个用于实现自动化任务的文档模板,在模板中,我们必须为要替换的单词上添加占位符,占位符用 {{}} 表示。
为了简单起见,我已经为求职信创建了一个模板。
图片由作者提供
为了使这个项目对初学者友好,只需使用 Python 和 docxtpl 替换元素 {{my_name}}、{{my_phone}}、{{my_email}}、{{my_address}}和{{today_date}}即可。
挑战任务:如果你想让这个项目更上一层楼,可尝试从Excel文件中提取数据,并在Word模板中引入它。
上述教程的第二部分有一个Excel文件,该文件如下表所示。
+-------+-----+------------+----------------+
| Name | ... | address | job |
+-------+-----+------------+----------------+
| Frank | ... | 123 Avenue | Data Scientist |
| ... | ... | ... | ... |
| John | ... | XYZ Avenue | Web Developer |
+-------+-----+------------+----------------+
你应该为表的每一行生成一个文档。
自动发送电子邮件(初级项目)
我曾经做过最无聊的工作任务之一就是发邮件,这个初级项目的目的和内容是:重要的电子邮件应该被仔细阅读和认真回复,但日常工作的电子邮件应该被自动处理!接下来我们将用Python实现自动发送电子邮件。
如何将这个任务自动化?我们只需要使用内置模块 smtplib 和 email,其中 smtplib 模块用于实现简单邮件传输协议(SMTP)发送电子邮件,email 模块实现电子邮件的读,写,发送复杂 MIME 消息。
下面是使用 Gmail 自动发送电子邮件的分步教程:
l 如何开启2步验证以便能够用Python使用Gmail;
l 如何使用 Python 发送普通电子邮件;
l 如何处理可能遇到的 SSL 错误;
挑战任务: 如果你想让这个项目更具挑战性,可以尝试在电子邮件中用imghdr 库添加图片。
自动填写 Web 表单(中级项目)
填写表单是互联网是最乏味的任务之一,一遍又一遍的填写姓名,电话,地址和更多信息是最无聊的。更加糟糕的是,有时候你不得不用假数据来填写调查表单。
在这里中级项目中,我们要用 Python 向网络表格填写假数据,并且将该任务自动化,这会使用一个Web自动化库,它允许我们执行 Web 操作,例如访问网站,输入文本,点击按钮。
下面是关于如何用Python将这项繁琐的任务自动化的分步教程。
- 如何在单个表单中填写数据;
- 如何使用 faker 库生成假数据;
- 如何填写多个表单;
挑战任务:我们在本教程中填写的表单仅有简单元素。如果你想让这个任务更具挑战性,可以在表单中添加高级元素,例如下拉菜单和多项选择题,然后尝试将这个高级表单实现自动化填写。
Tinder 自动化(高级项目)
在约会软件上向右滑动非常耗时的,以至于找到匹配对象之后,就会忽略网恋最重要的部分——将网恋对象转化为真正的约会对象!
这个高级项目包含一个机器人,它可以替你在软件上右滑,这样你就可以在搭讪台词上下功夫,提高你的转换率。
是什么让这个项目变得高级?有很多,仅罗列如下几个:
- 登录:无论你使用何种登录方式(谷歌、Facebook),Tinder都会向你的手机号码发送一个验证码,你需要使用这个验证码登录Tinder,为了方便处理这个问题,你需要保持一个谷歌浏览器窗口处于活动状态,然后用Selenium控制它;
- 棘手的按钮:如果你使用 .click方法来点击喜欢的按钮,有时会出现错误,对于这个特殊的网站,我们需要使用一种替代方法;
- 弹窗:右滑时,你可能会遇到不同的弹窗,你必须处理它们。
- 挑战任务:让机器人向你的匹配对象发送随机的搭讪信息,但这只是为了这个项目而做的!如果你想得到更多的回复,不要使用自动发送信息,因为我试过了,它没有自己发送高质量信息有效。
在工作中实现任务自动化(超高级项目)
毫无疑问,将工作中的一项繁琐任务自动化是你能做的最具挑战性的事情,为什么呢?因为这种情况下大概是是没有一个分步教程来指导你的,你必须自己思考使用什么Python库,以及用哪种方法来实现任务自动化。
要了解将任务自动化的方法,请回答以下问题:
- 哪些任务是我一直在重复做的?
- 我可以用Python实现哪些部分的自动化?
- 我可以使用哪些Python库来实现这个任务的自动化?
如果你能回答上述三个问题,那即使你找不到如何实现该任务自动化的特定教程,也可以通过查看某些代码库的文档学习如何实现该任务的自动化。
译者介绍
王德朕,51CTO社区编辑,10年互联网产研经验,6年IT教培行业经验。
原文标题:5 Python Projects to Automate Your Life: From Beginner to Advanced