一次成功的想法实践——自动打卡

前言
针对寒暑假还需要每日打卡、上报体温的苦逼大学生。因为我上学期有一门大数据分析的课程,所以一周速成过python基础和爬虫,准备爬取数据来完成课程大作业。到了寒假发现还需要每日打卡,这真的是很困难的一件事(绝对不是每天打打游戏就忘了)。所以就有了做这个的想法。
我觉得之前速成的python中selenium很适合完成这件自动打卡的工作。于是,随随便便跟着之前的爬虫删删改改就做成了。脚本是做成了,但是用起来很不方便,每次使用还要打开编辑器,点运行。这操作不亚于我自己打一次了,而且不是自动的。。。我要是记得手动去运行还需要脚本?这样如何自动化成了一个困难。首先挂在服务器上是不可能的。每次打卡会收集IP地址来验证打卡者的地理位置,这要是服务器运行脚本,我这直接一次就成自爆卡车了。这必须在我自己的电脑上跑脚本才行。此时,我脑中突然闪过一个关键词:计划任务。喔!windows是有这个功能的貌似,可以做一个定时计划任务。这样,我在打开电脑打游戏的空闲时候,就能随便打了卡。岂不美哉?
下面我就逐步介绍一下,我是怎么完成这个想法的。
第一步,环境搭建
首先,python的环境搭建,简单说一下吧。去官网下载python(现在是3.10版本)安装的时候记得打勾添加环境变量。然后就是vscode安装python插件,傻瓜式不多说了。
码代码之前,我们先把库的问题也解决了。一般来说网络好的情况,直接命令行打 pip install 库名 安装即可。这里我们需要两个库所以只需要命令行分别打 pip install time 和 pip install selenium 就完事儿了。
但是有时候库的安装总是有问题出现,原因还总搞不清楚,很烦。这里可以用Anaconda来解决(一个大佬教我的)。 这玩意儿,相当于一个独立的运行环境,里面初始就包含了100多个库,基本够用。
安装完selenium,想要驱动浏览器来完成自动化,还差一步就是弄一个驱动器。比如chrome,则需要在python的安装目录下script文件夹里放置一个chromedriver的小东西。这玩意网上很容易找到(下载的时候注意对应浏览器版本)。
第二步,代码编写

代码内容很简单很简单,理解每一句的意思之后更简单了。现在简单讲解一下,
1-2行:引用库time、selenium,time库的作用就是增加睡眠时间sleep,selenium库是用来完成自动化的。
4行:使用chrome驱动
6行:填网址,这样可以自动打卡相应网站
7行:最大化网页
9-10行:自动填写账号密码,这里是根据网页的源码查找输入框位置的。
driver.find_element_by_id(‘******’).send_keys('这里填账号')
就是根据id查找元素,这里******则需要根据具体网页来得知。'这里填账号',这里填写账号,自动化时就会自动将此处的内容输入到该输入框中
这里以百度为例,简单讲一下。

右击输入框——检查。很容易就能得到输入框对应的代码位置,然后id就很容易看出来了,上图的id就是kw。
11行:就是模拟点击,比如登录、提交、确定。这里的表示输入完账号密码后的登录。这类按钮一般使用根据xpath来定位的方法。
driver.find_element_by_xpath('******').click()
xpatn怎么找呢?同样,右击确定键——检查,找到对应代码,右击这一行代码——复制——复制xpath,这样就得到了这个按钮的xpath。

12行:这里就是time的sleep应用,表示休息1秒,防止网络不行,还没加载出就完成了下一步,也简单防一下脚本识别(操作太快还是容易被识别成脚本)。
13行:也是一个点击,选择打卡
15行:在输入体温的输入框里填写36
17行:点击提交
19行:退出浏览器
20行:提示任务完成
这里代码是根据本人学校的打卡网页写的,不同的网站是不一样的,需要自己简单分析一下步骤。不过主要思路是一样的。需要注意的一点是,登录后如果是跳转,那么就可以这样写代码,如果是在新标签页中打开。那就需要另一种写法了(也就是 driver.switch_to 跳转到需要的标签页,用法网上一堆,不多说了)。
第三步,程序打包
脚本程序为了方便使用和传播给别人使用,打包是非常需要的(这样的话,对方可以直接使用运行,无需搭建python环境)。又是需要安装库了 pip install pyinstaller 。
库安装完成后,把刚写好的.py文件放到C:\Users\25348目录下(25348就是计算机用户名字),命令行 pyinstaller -F -w pytest.py ,等待打包完成就行了(显示的最后一行里有successfully就是成功了)。这里-F表示单文件打包;-w表示打包完成的exe运行时不显示命令行 。
打包完成后,去C:\Users\25348\dist目录下就能找到已经打包好的.exe文件了。双击就能直接运行,而且还不需要环境,任何一台电脑都能用,肥肠蚝蛹~
第四步,定时任务
现在离真正的自动化就差最后一步了。直接用windows的计划任务功能了。我稍微摸索了一下,现在介绍一下怎么用。
win + s 搜索 控制面板——系统和安全——管理工具下面的计划任务——右侧创建基本任务——填写名称,下一步——触发选择每天,下一步——时间按需设置,下一步——操作选择启动程序,下一步——目录选择好C:\Users\25348\dist下的程序,完成
这样还需要最后加一些设置:在列表里找到自定义的任务,右击,属性——设置选项卡——勾选“如果过了时间计划开始时间,立刻开始任务”——确定

这样,整个项目就完成了。如果过程没有问题的话,到点就会自动打卡,如果过了时间点,当我打开电脑的时候也会第一时间完成打卡。
芜湖~撒花❀❀❀❀❀❀~