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读取html中指定元素生成excle文件示例
Apr 03 Python
python基础教程之Hello World!
Aug 29 Python
Python中encode()方法的使用简介
May 18 Python
python中numpy基础学习及进行数组和矢量计算
Feb 12 Python
Python tkinter label 更新方法
Oct 11 Python
python+pyqt5编写md5生成器
Mar 18 Python
Python 可变类型和不可变类型及引用过程解析
Sep 27 Python
Jupyter notebook设置背景主题,字体大小及自动补全代码的操作
Apr 13 Python
python3+selenium获取页面加载的所有静态资源文件链接操作
May 04 Python
Python-jenkins 获取job构建信息方式
May 12 Python
Python使用Turtle模块绘制国旗的方法示例
Feb 28 Python
详解Python中*args和**kwargs的使用
Apr 07 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
攻克CakePHP系列一 连接MySQL数据库
2008/10/22 PHP
MayFish PHP的MVC架构的开发框架
2009/08/13 PHP
PHP 页面编码声明方法详解(header或meta)
2010/03/12 PHP
PHP的substr_replace将指定两位置之间的字符替换为*号
2011/05/04 PHP
基于php实现长连接的方法与注意事项的问题
2013/05/10 PHP
PHP Echo字符串的连接格式
2016/03/07 PHP
php+mysql实现的二级联动菜单效果详解
2016/05/10 PHP
PHP实现中国公民身份证号码有效性验证示例代码
2017/05/03 PHP
让mayfish支持mysqli数据库驱动的实现方法
2010/05/22 Javascript
jquery 面包屑导航 具体实现
2013/06/05 Javascript
Jquery AJAX POST与GET之间的区别
2013/11/14 Javascript
js格式化金额可选是否带千分位以及保留精度
2014/01/28 Javascript
javascript实现简单查找与替换的方法
2015/07/22 Javascript
原生js实现轮播图
2017/02/27 Javascript
vue App.vue中的公共组件改变值触发其他组件或.vue页面监听
2019/05/31 Javascript
Vue的属性、方法、生命周期实例代码详解
2019/09/17 Javascript
js cavans实现静态滚动弹幕
2020/05/21 Javascript
Python编程快速上手——强口令检测算法案例分析
2020/02/29 Python
Python面向对象程序设计之类和对象、实例变量、类变量用法分析
2020/03/23 Python
python如何爬取网页中的文字
2020/07/28 Python
python利用opencv保存、播放视频
2020/11/02 Python
Canvas globalCompositeOperation
2018/12/18 HTML / CSS
俄罗斯有趣和原创礼物网上商店:MagicMag
2019/08/01 全球购物
澳大利亚最早和最古老的巨型游戏专家:Yardgames
2020/02/20 全球购物
巴西Bo.Bô官方在线商店:经营奢侈品时尚业务
2020/03/16 全球购物
比较基础的php面试题及答案-编程题
2012/10/14 面试题
教师个人鉴定材料
2014/02/08 职场文书
企业安全生产演讲稿
2014/05/09 职场文书
离职保密承诺书
2014/05/28 职场文书
住房抵押登记委托书
2014/09/27 职场文书
2014年妇幼保健工作总结
2014/12/08 职场文书
士兵突击观后感
2015/06/16 职场文书
网络营销实训总结
2015/08/03 职场文书
消防宣传标语大全
2015/08/03 职场文书
写给汽车4S店的创业计划书,拿来即用!
2019/08/09 职场文书
Pandas||过滤缺失数据||pd.dropna()函数的用法说明
2021/05/14 Python