python+selenium 脚本实现每天自动登记的思路详解


Posted in Python onMarch 11, 2020

最近受疫情影响,学校要求每天必须进行健康登记,而我身处大山深处,身体健康,足不出户,奈何总是容易忘记,遂决定手撸一个自动登记的小程序,仅供学习交流之用,话不多说,直接上代码。
配置:Chrom python3.7 selenium库,webdriver等
基本思路,使用selenium模拟浏览器自动登录,需要解决验证码的提取,嵌套表单的提取,弹窗处理,异常处理。
为了防止大家用此网站测试,搞垮服务器,关键网址我已隐藏。

import selenium.webdriver 
import time
from bs4 import BeautifulSoup
from selenium.webdriver.common.keys import Keys
driver = selenium.webdriver.Chrome()

url = '你的url'
driver.get(url)
source = driver.find_element_by_xpath('//p[@class="mb-md-5 mb-3 welcome-para"]/a')
#source.get_attribute('href').click()
ur2 = source.get_attribute('href')
driver.get(ur2)#来到登录界面
time.sleep(10)
html = driver.page_source
bs = BeautifulSoup(html,"html.parser")
s = bs.findAll(name='div')[14].text[3:7] #获得验证码
time.sleep(5)
#输入用户名,密码,验证码
driver.find_element_by_name("username").send_keys(你的账号)
driver.find_element_by_name("userpwd").send_keys(你的密码)
driver.find_element_by_name("code").send_keys(s)
driver.find_element_by_name("login").click()
time.sleep(5)
#这里是解决页面跳转问题,用了笨办法
url3='你的url'
driver.get(url3)
time.sleep(5)
driver.switch_to.frame('leftFrame')
html = driver.page_source
bs = BeautifulSoup(html,"html.parser")
url4 = 'https://xsswzx.cdu.edu.cn:81/isp/com_user/'
url5 = bs.findAll('a')[43].get('href')
url6=url4+url5
driver.get(url6)
time.sleep(5)
driver.find_element_by_xpath('//input[@value="【一键登记:无变化】"]').click()
dig_alert = driver.switch_to.alert
dig_alert.accept()
time.sleep(5)
try:
 dig_alert = driver.switch_to.alert
 dig_alert.accept()
except:
 pass
time.sleep(10)
try:
 driver.find_element_by_xpath('//input[@value="退出系统"]').click()
except:
 driver.close()
print("登记成功")

执行此程序就可以实现登记了,但是并没有实现每天自动登记,下面我们结合Windows通过Anaconda定时调用python脚本,实现每天定时自动登记。
首先编写一个bat脚本:
#此处为引用别人的内容,参考链接:
https://zhuanlan.zhihu.com/p/50057040

python+selenium 脚本实现每天自动登记的思路详解
python+selenium 脚本实现每天自动登记的思路详解

配置好bat文件后

python+selenium 脚本实现每天自动登记的思路详解
python+selenium 脚本实现每天自动登记的思路详解

为了使电脑在关机的情况下也能自己开机启动此程序(万一你睡过头了呢,对吧),我们配置如下:

python+selenium 脚本实现每天自动登记的思路详解
python+selenium 脚本实现每天自动登记的思路详解
python+selenium 脚本实现每天自动登记的思路详解

点击确定,至此大功告成。

知识点补充:Python实现自动填写网安早上登记信息

放在这里以后还可以参考!!!

from selenium import webdriver
import time
import schedule

def auto_click():
  var1 = 0
  file = open('1.txt', 'r')
  list1 = []
  for num in file:
    list1.append(num)
  list1 = list(map(int, list1))
  while var1 < len(list1):
    driver = webdriver.Chrome()
    driver.maximize_window()
    driver.implicitly_wait(10)
    driver.get('http://acm.scu.edu.cn/student/weui/sars2.html?from=singlemessage')
    driver.find_element_by_xpath('//*[@id="number"]').send_keys(list1[var1])
    driver.find_element_by_xpath('//*[@id="showTooltips"]').click()
    time.sleep(5)
    driver.quit()
    var1 += 1
schedule.every().day.at('16:19').do(auto_click)
while True:
  schedule.run_pending()
  time.sleep(1)

到此这篇关于python+selenium 脚本实现每天自动登记的思路详解的文章就介绍到这了,更多相关python selenium 每天自动登记内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python求算数平方根和约数的方法汇总
Mar 09 Python
python中os模块详解
Oct 14 Python
Python OpenCV处理图像之滤镜和图像运算
Jul 10 Python
对Python w和w+权限的区别详解
Jan 23 Python
Python常用特殊方法实例总结
Mar 22 Python
提升Python程序性能的7个习惯
Apr 14 Python
python实现月食效果实例代码
Jun 18 Python
详解python中*号的用法
Oct 21 Python
python获取array中指定元素的示例
Nov 26 Python
Django实现前台上传并显示图片功能
May 29 Python
使用keras实现非线性回归(两种加激活函数的方式)
Jul 05 Python
Python json解析库jsonpath原理及使用示例
Nov 25 Python
Django+boostrap 美化admin后台的操作
Mar 11 #Python
Windows 下python3.8环境安装教程图文详解
Mar 11 #Python
django admin后管定制-显示字段的实例
Mar 11 #Python
Python 3.8 新功能来一波(大部分人都不知道)
Mar 11 #Python
屏蔽Django admin界面添加按钮的操作
Mar 11 #Python
在Mac中PyCharm配置python Anaconda环境过程图解
Mar 11 #Python
python实现飞机大战项目
Mar 11 #Python
You might like
mysql4.1以上版本连接时出现Client does not support authentication protocol问题解决办法
2007/03/15 PHP
Gregarius中文日期格式问题解决办法
2008/04/22 PHP
php 启动报错如何解决
2014/01/17 PHP
PHP中substr函数字符串截取用法分析
2016/01/07 PHP
PHP实现将优酷土豆腾讯视频html地址转换成flash swf地址的方法
2017/08/04 PHP
js DOM的学习笔记
2011/12/22 Javascript
解析jQuery的三种bind/One/Live事件绑定使用方法
2013/12/30 Javascript
JS获取节点的兄弟,父级,子级元素的方法
2014/01/09 Javascript
JS获取当前日期时间并定时刷新示例
2021/03/04 Javascript
AngularJS模块管理问题的非常规处理方法
2015/04/29 Javascript
javascript下拉列表菜单的实现方法
2015/11/18 Javascript
浅析JavaScript Array和string的转换(推荐)
2016/05/20 Javascript
Angular JS数据的双向绑定详解及实例
2016/12/31 Javascript
Bootstrap页面标题Page Header的实现方法
2017/03/22 Javascript
详解如何用babel转换es6的class语法
2018/04/03 Javascript
JS中async/await实现异步调用的方法
2019/08/28 Javascript
nodejs一个简单的文件服务器的创建方法
2019/09/13 NodeJs
浅析vue cli3 封装Svgicon组件正确姿势(推荐)
2020/04/27 Javascript
JavaScript事件概念详解(区分静态注册和动态注册)
2021/02/05 Javascript
ubuntu安装mysql pycharm sublime
2018/02/20 Python
python分治法求二维数组局部峰值方法
2018/04/03 Python
python 实现数组list 添加、修改、删除的方法
2018/04/04 Python
python3 使用traceback定位异常实例
2020/03/09 Python
浅谈Tensorflow加载Vgg预训练模型的几个注意事项
2020/05/26 Python
Python 解析xml文件的示例
2020/09/29 Python
python爬虫快速响应服务器的做法
2020/11/24 Python
python链表类中获取元素实例方法
2021/02/23 Python
CSS3 background-image颜色渐变的实现代码
2018/09/13 HTML / CSS
爱淘宝:淘宝网购物分享平台
2017/04/28 全球购物
美国领先的机场停车聚合商:Airport Parking Reservations
2020/02/28 全球购物
音乐学个人的自荐书范文
2013/11/26 职场文书
小学生三分钟演讲稿
2014/08/18 职场文书
法律专业大学生职业生涯规划书:向目标一步步迈进
2014/09/22 职场文书
2015小学五年级班主任工作总结
2015/05/21 职场文书
2016年优秀少先队员事迹材料
2016/02/26 职场文书
Java8利用Stream对列表进行去除重复的方法详解
2022/04/14 Java/Android