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实现在Linux系统下更改当前进程运行用户
Feb 04 Python
Python简单检测文本类型的2种方法【基于文件头及cchardet库】
Sep 18 Python
python中numpy基础学习及进行数组和矢量计算
Feb 12 Python
简单了解Django模板的使用
Dec 20 Python
python3使用smtplib实现发送邮件功能
May 22 Python
基于python实现高速视频传输程序
May 05 Python
python实现简单聊天室功能 可以私聊
Jul 12 Python
详细整理python 字符串(str)与列表(list)以及数组(array)之间的转换方法
Aug 30 Python
用python拟合等角螺线的实现示例
Dec 27 Python
tensorflow-gpu安装的常见问题及解决方案
Jan 20 Python
Python性能测试工具Locust安装及使用
Dec 01 Python
python小程序之飘落的银杏
Apr 17 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
CodeIgniter中实现泛域名解析
2014/07/19 PHP
thinkPHP数据库增删改查操作方法实例详解
2016/12/06 PHP
yii2实现Ueditor百度编辑器的示例代码
2018/11/02 PHP
Jquery 学习笔记(一)
2009/10/13 Javascript
JavaScript实现定时隐藏与显示图片的方法
2015/08/06 Javascript
jquery ajax 如何向jsp提交表单数据
2015/08/23 Javascript
nodejs如何获取时间戳与时间差
2016/08/03 NodeJs
Vue.Js中的$watch()方法总结
2017/03/23 Javascript
BootStrap Table 后台数据绑定、特殊列处理、排序功能
2017/05/27 Javascript
简单实现js拖拽效果
2017/07/25 Javascript
javascript自定义事件功能与用法实例分析
2017/11/08 Javascript
javascript性能优化之分时函数的介绍
2018/03/28 Javascript
微信小程序网络请求封装示例
2018/07/24 Javascript
实例详解Vue项目使用eslint + prettier规范代码风格
2018/08/20 Javascript
vue中eslintrc.js配置最详细介绍
2018/12/21 Javascript
使用PreloadJS加载图片资源的基础方法详解
2020/02/03 Javascript
微信小程序实现canvas分享朋友圈海报
2020/06/21 Javascript
[06:23]2014DOTA2西雅图国际邀请赛 小组赛7月12日TOPPLAY
2014/07/12 DOTA
[00:08]DOTA2勇士令状等级奖励“天外飞星”
2019/05/24 DOTA
bat和python批量重命名文件的实现代码
2016/05/19 Python
python实现将excel文件转化成CSV格式
2018/03/22 Python
Pandas-Cookbook 时间戳处理方式
2019/12/07 Python
Python环境下安装PyGame和PyOpenGL的方法
2020/03/25 Python
Pytorch实现将模型的所有参数的梯度清0
2020/06/24 Python
体验完美剃须:The Art of Shaving
2018/08/06 全球购物
机电专业毕业生求职信
2013/10/27 职场文书
优秀团支部事迹材料
2014/02/08 职场文书
大学生自我评价范文分享
2014/02/21 职场文书
幼儿园社区活动总结
2014/07/07 职场文书
乒乓球兴趣小组活动总结
2014/07/08 职场文书
2015年母亲节活动总结
2015/02/10 职场文书
催款律师函范文
2015/05/27 职场文书
《生物入侵者》教学反思
2016/02/16 职场文书
如何用JavaScript学习算法复杂度
2021/04/30 Javascript
CSS实现两列布局的N种方法
2021/08/02 HTML / CSS
MySQL去除密码登录告警的方法
2022/04/20 MySQL