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常用正则表达式符号浅析
Aug 13 Python
Python Paramiko模块的安装与使用详解
Nov 18 Python
利用matplotlib+numpy绘制多种绘图的方法实例
May 03 Python
Python使用内置json模块解析json格式数据的方法
Jul 20 Python
python matplotlib中文显示参数设置解析
Dec 15 Python
ubuntu环境下python虚拟环境的安装过程
Jan 07 Python
pandas ix &amp;iloc &amp;loc的区别
Jan 10 Python
Python 识别12306图片验证码物品的实现示例
Jan 20 Python
keras获得某一层或者某层权重的输出实例
Jan 24 Python
关于Keras Dense层整理
May 21 Python
Scrapy框架介绍之Puppeteer渲染的使用
Jun 19 Python
pycharm 添加解释器的方法步骤
Aug 31 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+DBM的同学录程序(5)
2006/10/09 PHP
PHP 计算代码执行耗时的代码修正网上普遍错误
2011/05/14 PHP
php实现递归的三种基本方式
2020/07/04 PHP
PHP实现的简单异常处理类示例
2017/05/04 PHP
PHP使用Nginx实现反向代理
2017/09/20 PHP
PHP小白必须要知道的php基础知识(超实用)
2017/10/10 PHP
写了一个layout,拖动条连贯,内容区可为iframe
2007/08/19 Javascript
javascript一些不错的函数脚本代码
2008/09/10 Javascript
Js 中debug方式
2010/02/07 Javascript
instanceof和typeof运算符的区别详解
2014/01/06 Javascript
jquery获得同源iframe内body下标签的值的方法
2014/09/25 Javascript
jquery中实现时间戳与日期相互转换
2016/04/12 Javascript
20分钟成功编写bootstrap响应式页面 就这么简单
2016/05/12 Javascript
javascript中数组和字符串的方法对比
2016/07/20 Javascript
Angular在一个页面中使用两个ng-app的方法(二)
2017/02/20 Javascript
Vue表单验证插件的制作过程
2017/04/01 Javascript
react开发教程之React 组件之间的通信方式
2017/08/12 Javascript
JS处理一些简单计算题
2018/02/24 Javascript
基于vue.js实现的分页
2018/03/13 Javascript
Node.js使用cookie保持登录的方法
2018/05/11 Javascript
vue使用jsonp抓取qq音乐数据的方法
2018/06/21 Javascript
vue h5移动端禁止缩放代码
2019/10/28 Javascript
[01:56]2014DOTA2西雅图邀请赛 MVP外卡赛老队长精辟点评
2014/07/09 DOTA
Python中的高级数据结构详解
2015/03/27 Python
python Django模板的使用方法
2016/01/14 Python
python:socket传输大文件示例
2017/01/18 Python
windows下pycharm安装、创建文件、配置默认模板
2018/07/31 Python
django的settings中设置中文支持的实现
2019/04/28 Python
python 装饰器功能与用法案例详解
2020/03/06 Python
平安工地建设方案
2014/05/06 职场文书
党员作风建设整改方案
2014/10/27 职场文书
2015年机关纠风工作总结
2015/05/15 职场文书
宣传委员竞选稿
2015/11/19 职场文书
导游词之重庆钓鱼城
2019/09/19 职场文书
避坑之 JavaScript 中的toFixed()和正则表达式
2022/04/19 Javascript
Oracle查看表空间使用率以及爆满解决方案详解
2022/07/23 Oracle