python自动打卡程序_使用Python实现平台自动打卡

众所周知,人的懒惰是技术发展的一大动力。

现在正处疫情期间,因为我总是忘记及时健康打卡而导致被年级群通报,故干脆写了个Python脚本来自动打卡。

若之后我的身体状态、所在地等信息都没有改变的话,这个脚本就能帮我完成一个小任务嘞。

代码部分

代码整体并不难。

通过使用Selenium库,能够将一切网页端的操作模拟成一个真正的用户在操作。

Selenium安装

库本身并不难安装,只需要运行以下指令即可:

pip install selenium

ChromeDriver的版本号要与本机安装的Chrome浏览器的版本相同。打开Chrome,可以通过点击右上角的菜单按钮(即三个竖直排列的"."),然后选择"帮助" > "关于 Google Chrome",即可看到浏览器的版本号:

按照Chrome的版本下载ChromeDriver,然后还需要将其安装到Python环境中。打开命令行界面,通过where python查询Python环境位置,将下载好的chromedriver.exe复制到Scripts文件夹中。

之后在命令行界面中通过chromedriver命令可查看ChromeDriver是否正常安装。若正常,则会出现如下类似输出:

Starting ChromeDriver 80.0.3987.106 (f68069574609230cf9b635cd784cfb1bf81bb53a-refs/branch-heads/3987@{#882}) on port ****

Only local connections are allowed.

Please protect ports used by ChromeDriver and related test frameworks to prevent access by malicious code.

签到部分

Selenium的一个好处是所有的操作都是直接运行再浏览器中,和真正的用户操作是一样的。因此就不需要设置伪装头文件了。

浏览器模拟

# 这部分用来设置运行时不显示浏览器窗口

chrome_options = Options()

chrome_options.add_argument("--headless")

# 模拟浏览器进行访问

browser = webdriver.Chrome(options=chrome_options)

browser.get("https://jksb.v.zzu.edu.cn/vls6sss/zzujksb.dll/first0")

进行签到

# 通过find_element_by_xpath来定位用户名和密码的输入框

browser.find_element_by_xpath("//*[@id='mt_5']/div[1]/div[3]/input").send_keys(uid)

browser.find_element_by_xpath("//*[@id='mt_5']/div[2]/div[3]/input").send_keys(pwd)

为了防止加载不完全的错误,可以设置time.sleep(2)来阻塞两秒等待加载。

通过以下代码可以获取到签到完成后的提示信息,用作之后的通知邮件的内容:

final_text = browser.find_element_by_xpath("//*[@id='bak_0']/div[2]/div[2]/div[2]/div[2]").text

邮件通知

签到后会通过邮件来告知我是否成功。

这里我用的是QQ邮箱:

def mail(mail_text, mail_to):

# 设置邮件内容,用的是之前签到返回的提示信息

msg = MIMEText(mail_text)

# 设置邮件主题、发送方和接收方

msg['Subject'] = "每日健康打卡通知"

msg['From'] = MAIL_USER

msg['To'] = mail_to

# 发送邮件

send = smtplib.SMTP_SSL("smtp.qq.com", 465)

send.login(MAIL_USER, MAIL_PWD)

send.send_message(msg)

# 退出邮件

send.quit()

私人信息

因这部分牵涉到了个人信息,我单独建了一个private_info.py来存储,并没有公开,故用户在使用时需要自行创建。内容如下:

MAIL_USER = "your-notice@email.address" # 用于发送通知的邮箱

MAIL_PWD = "your-authorization-code" # 该邮箱的授权码

# 单用户

UID = "your-id" # 学号

PWD = "your-password" # 密码

MAIL_TO = "your-email" # 接受通知的邮箱

# 多用户

users = list()

users.append(User("your-id", "your-password", "your-email"))

其中多用户添加账户信息时,使用的是自定义类User(),代码如下:

class User:

uid = ""

pwd = ""

email = ""

def __init__(self, uid, pwd, email):

self.uid = uid

self.pwd = pwd

self.email = email

完整代码放在了Github上,如果读者有兴趣,不妨试一试。

任务定时

我看了几个Python实现的定时运行方法,感觉都不是很好。

在尝试了几种后,最终选择了使用Win10自带的“任务计划程序”。

单击右侧“创建基本任务”:

输入名称、描述后单击下一步,选择“每天”,开始时间我设置在了“06:00”。

之后选择“启动程序”,继续下一步。

接下来会到“启动程序界面”,在“程序或脚本”处选择自己的python环境所在位置,然后在“添加参数处”输入auto_sign.py的路径,如图所示:

继续“下一步”后,单击“完成”即可。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/507504.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python莫比乌斯环_有哪些完美或接近完美的构造(机械,生物,数学公式,文章,软件等等)?为什么完美?又能有什么领悟?...

分形。分形是一个几何概念。举个例子,Koch曲线。来自度娘百科由一个等边三角形开始(图1),取去掉每条边中间1/3部分,接上一个等边三角形的两个边(图2),如此重复无穷多次。最后我们得到一个面积有限,边长无限的图形。形状…

python 秒杀12306课程_Python攻破12306网站,实现2020最强抢票模式!

python版本支持2.7.10 - 2.7.15依赖库依赖若快 若快注册地址:推荐用若快,打码兔平台已经关闭项目依赖包 requirements.txt安装方法-Windows:安装方法-Linux:root用户(避免多python环境产生问题): python2 -m pip install -i pip install -i -r requireme…

coverage path planning覆盖路径规划(2021-左海民 )

如何扩展研究问题 1.1 地图已知 -> 离线算法,地图未知 -> 探索算法,地图动态 -> 动态算法 1.2 障碍物 -> 障碍物是概率值 (日常的高速路,有可能道路维护) 1.3 障碍物 -> 障碍物并未填充整个小块 1.4 将这些问题对应到实际应用…

python赋值的数组无序怎么办_Python的多维空数组赋值方法

Python里面的list、tuple默认都是一维的。创建二维数组或者多维数组也是比较简单。可以这样:list1 [1,2,]list1.append([3,4,])可以这样:list2 [1,2,[3,4,],]还可以这样:list3 [1,2]list3.insert(2, [3,4])比较特殊的情况是:li…

二维码研究综述--传统图像处理方法

1 北京交通大学电子信息工程学院–陈后金教授 1.1 基本信息 题目:《Data Matrix二维条码图像识别的算法研究与实现》 学生:李雅静 2009年6月 1.2 摘要 问题:实际采集到的二维条码图像 , 不可避免的会遇到光照不均 、 拍摄角度多样 、 背景…

一文重新认识联邦学习

重要申明:本文转载自https://user.guancha.cn/main/content?id674888。 人工智能助力抗疫又添新场景。据报道,英国剑桥爱登布鲁克医院(Addenbrooke’s Hospital)与全球20家医院和医疗科技中心联合医疗科技领军企业英伟达采用人工…

spi四种工作模式时序图_还没学会SPI总线协议?干货都在这里

SPI总线基本概念SPI是一种高速、全双工、同步的串行通信总线,全称是Serial Peripheral Interface,使用时在芯片的管脚上只占用三根或者四根线(如果单向传输的话只需三根线就可以了),节约了芯片的管脚资源,所以在实际项目中应用也非…

序列推荐系统文献调研(1)

1 简介 论文:用于统一一般推荐和序列推荐的循环协同过滤 Recurrent Collaborative Filtering for Unifying General and Sequential Recommender 出版:Proceedings of the Twenty-Seventh International Joint Conference on Artificial Intelligence (…

命令不识别_互助问答138期:GMM命令代码中如何识别年份国家及异方差检验问题...

老师您好,有两个关于系统GMM的问题想请教一下:(1)在所学的教程里,系统GMM没有引入时间,我目前是分行业分国家的时间为T年的面板数据,请问时间应该放入xtdpdsys的命令中的哪个位置?代码是写作i.year吗&#…

研究生培养三部曲

1 引言 研究生培养是否有规律可以遵循,在多年实践的基础上,我们认为研究生应具备如下三方面的能力: (1)标准化:包括文档、代码必须遵循一定的规范; (2)逻辑严谨性&#…

python sympy安装_SymPy (A) 环境搭建与简介

SymPy简介:符号计算包 symbolical python, sympy的便携仅依赖于 第三方包mpmath.学习途径(穷即正义系列)官网 https://sympy.orgMannual Docs(python3.x executable)环境推荐(下载安装 anaconda, 使用里边的spyder).更香的搭建安装好python3.7 以后打开终端 cmd(windows), 安装…

【二叉树】【单调双向队列】LeetCode239:滑动窗口最大值

作者推荐 map|动态规划|单调栈|LeetCode975:奇偶跳 涉及知识点 单调双向队列 二叉树 题目 给你一个整数数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。 返回 滑动…

如何理解马尔可夫决策过程?

1 引言 马尔可夫性:无后效性,指系统的下个状态只与当前状态信息有关,而与更早之前的状态无关; 马尔可夫链(Markov Chain, MC):系统的下一个状态只与当前状态相关; 马尔可夫决策过程(Markov Decision Proce…

雷电3接口能干嘛_acasis阿卡西斯推出首款雷电3接口WIFI6网卡:内置Intel AX200

手机、笔记本、平板等智能移动设备已经无声无息成为人们不可或缺的一部分,5G、WiFi是作为信息首发的主要通讯技术。还记得以前连接路由器的人多了就开始卡起来,这是旧式WiFi信道拥堵所造成的,随着技术发展,WiFi从802.11n到802.11a…

萤火虫小程序_9.9元起!萤火虫中秋文化节来了!特价门票限量秒杀,手慢无!...

记忆中关于儿时夏天的美好:睡莲娇绽,绿树成荫,抱着大半个西瓜对着吹风扇,叼着冰棍在院子里玩蛐蛐儿,叫上小伙伴们浅溪里扑棱水,带上手电去树林里寻萤火虫…然而充满浪漫色彩的夏天转瞬即逝,心心…

如何利用录井/测井数据进行学习?

1 数据 数据来源:录井/测井数据。 录井数据的特点: (1)在钻井过程中采集; (2)大概1米一个点; (3)特征包括:钻屑的特征、钻进过程中的油气水的特征…

jmeter 加密解密_犯罪大师入门篇密文答案 谜之解密入门篇密文解题详解_游戏资讯...

第一关犯罪大师入门篇密文答案是什么?犯罪大师谜之解密开启了新的入门篇解密,这次的解密分为四章,每章的内容涉及猪圈密码、埃特巴什密码和元音密码三个内容。因此对玩家来讲难度是很高的,那么具体的答案是什么呢?这里就为大家带…

芯片老化验证流程_一种芯片测试及老化测试装置的制作方法

本实用新型涉及芯片测试技术领域,具体为一种芯片测试及老化测试装置。背景技术:芯片老化测试是一种采用电压和高温来加速器件电学故障的电应力测试方法。老化过程基本上模拟运行了芯片整个寿命,因为老化过程中应用的电激励反映了芯片工作的最…