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中对列表排序实例
Jan 04 Python
python开发环境PyScripter中文乱码问题解决方案
Sep 11 Python
Python编程使用tkinter模块实现计算器软件完整代码示例
Nov 29 Python
Python实现读取SQLServer数据并插入到MongoDB数据库的方法示例
Jun 09 Python
Python列表解析配合if else的方法
Jun 23 Python
Python爬虫常用库的安装及其环境配置
Sep 19 Python
解决python3运行selenium下HTMLTestRunner报错的问题
Dec 27 Python
Python生成rsa密钥对操作示例
Apr 26 Python
详解python 爬取12306验证码
May 10 Python
python3.x+pyqt5实现主窗口状态栏里(嵌入)显示进度条功能
Jul 04 Python
Django使用中间件解决前后端同源策略问题
Sep 02 Python
tensorflow实现训练变量checkpoint的保存与读取
Feb 10 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学习 计数器实例代码
2008/06/15 PHP
crontab无法执行php的解决方法
2016/01/25 PHP
纯js实现的论坛常用的运行代码的效果
2008/07/15 Javascript
js 发个判断字符串是否为符合标准的函数
2009/04/27 Javascript
JS setCapture 区域外事件捕捉
2010/03/18 Javascript
在JavaScript中获取请求的URL参数[正则]
2010/12/25 Javascript
jquery中的过滤操作详细解析
2013/12/02 Javascript
JS+HTML5手机开发之滚动和惯性缓动实现方法分析
2016/06/12 Javascript
JS获取鼠标相对位置的方法
2016/09/20 Javascript
JS实现HTML标签转义及反转义
2020/04/14 Javascript
Vue无限滑动周选择日期的组件的示例代码
2018/07/18 Javascript
layDate日期控件使用方法详解
2018/11/15 Javascript
微信小程序实现文字从右向左无限滚动
2020/11/18 Javascript
Vue中el-form标签中的自定义el-select下拉框标签功能
2020/04/20 Javascript
vue-router为激活的路由设置样式操作
2020/07/18 Javascript
详解python基础之while循环及if判断
2017/08/24 Python
python实现点对点聊天程序
2018/07/28 Python
wxPython色环电阻计算器
2019/11/18 Python
python virtualenv虚拟环境配置与使用教程详解
2020/07/13 Python
python dict如何定义
2020/09/02 Python
HTML5: Web 标准最巨大的飞跃
2008/10/17 HTML / CSS
HTML5上传文件显示进度的实现代码
2012/08/30 HTML / CSS
基于html5 canvas实现漫天飞雪效果实例
2014/09/10 HTML / CSS
HTML5实现无刷新修改URL的方法
2019/11/14 HTML / CSS
为什么会有内存对齐
2016/10/10 面试题
新闻编辑专业毕业自荐书范文
2014/02/05 职场文书
原料仓仓管员岗位职责
2014/07/08 职场文书
中职毕业生自我鉴定
2014/09/13 职场文书
2015初中政教处工作总结
2015/07/21 职场文书
防溺水主题班会教案
2015/08/12 职场文书
高三化学教学反思
2016/02/22 职场文书
Nginx工作原理和优化总结。
2021/04/02 Servers
高考要来啦!用Python爬取历年高考数据并分析
2021/06/03 Python
python缺失值的解决方法总结
2021/06/09 Python
Netty结合Protobuf进行编解码的方法
2021/06/26 Java/Android
Javascript设计模式之原型模式详细
2021/10/05 Javascript