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将人民币转换大写的脚本代码
Feb 10 Python
python实现多线程暴力破解登陆路由器功能代码分享
Jan 04 Python
老生常谈Python进阶之装饰器
May 11 Python
python3.6 实现AES加密的示例(pyCryptodome)
Jan 10 Python
解决python写入带有中文的字符到文件错误的问题
Jan 31 Python
python 应用之Pycharm 新建模板默认添加编码格式-作者-时间等信息【推荐】
Jun 17 Python
Python3 tkinter 实现文件读取及保存功能
Sep 12 Python
PyCharm GUI界面开发和exe文件生成的实现
Mar 04 Python
Python自动巡检H3C交换机实现过程解析
Aug 14 Python
浅析python 通⽤爬⾍和聚焦爬⾍
Sep 28 Python
windows安装python超详细图文教程
May 21 Python
python not运算符的实例用法
Jun 30 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
探寻PHP脚本不报错的原因
2014/06/12 PHP
php中创建和调用webservice接口示例
2014/07/25 PHP
深入剖析浏览器退出之后php还会继续执行么
2016/05/17 PHP
ThinkPHP模板标签eq if 中区分0,null,false的方法
2017/03/24 PHP
laravel 框架执行流程与原理简单分析
2020/02/01 PHP
Js+Dhtml:WEB程序员简易开发工具包(预先体验版)
2006/11/07 Javascript
javascript hashtable实现代码
2009/10/13 Javascript
js模拟类继承小例子
2010/07/17 Javascript
使用隐藏的new来创建对象
2011/03/29 Javascript
Js中setTimeout()和setInterval() 何时被调用执行的用法
2013/04/12 Javascript
jquery 页面滚动到指定DIV实现代码
2013/09/25 Javascript
JavaScript打印网页指定区域的例子
2014/05/03 Javascript
纯JavaScript代码实现移动设备绘图解锁
2015/10/16 Javascript
js判断当前页面在移动设备还是在PC端中打开
2016/01/06 Javascript
javascript函数命名的三种方式及区别介绍
2016/03/22 Javascript
在IE8上JS实现combobox支持拼音检索功能
2016/05/23 Javascript
BootStrap 智能表单实战系列(五) 表单依赖插件处理
2016/06/13 Javascript
jQuery中.attr()和.data()的区别分析
2017/09/03 jQuery
php main 与 iframe 相互通讯类(js+php同域/跨域)
2017/09/14 Javascript
详解为什么Vue中的v-if和v-for不建议一起用
2021/01/13 Vue.js
Python代理抓取并验证使用多线程实现
2013/05/03 Python
Python使用os模块和fileinput模块来操作文件目录
2016/01/19 Python
python dataframe astype 字段类型转换方法
2018/04/11 Python
Python两台电脑实现TCP通信的方法示例
2019/05/06 Python
PyQt5+python3+pycharm开发环境配置教程
2020/03/24 Python
简单介绍CSS3中Media Query的使用
2015/07/07 HTML / CSS
迪卡侬荷兰官网:Decathlon荷兰
2017/10/29 全球购物
AVI-8手表美国官方商店:AVI-8 USA
2019/04/10 全球购物
专升本自我鉴定
2013/10/10 职场文书
三好学生自我鉴定
2013/12/17 职场文书
建筑工地大门标语
2014/06/18 职场文书
大学团日活动新闻稿
2014/09/10 职场文书
四风个人对照检查材料思想汇报
2014/09/25 职场文书
2015年银行柜员工作总结报告
2015/04/01 职场文书
信息技术教研组工作总结
2015/08/13 职场文书
Python-OpenCV教程之图像的位运算详解
2021/06/21 Python