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编写批量卸载手机中安装的android应用脚本
Jul 21 Python
粗略分析Python中的内存泄漏
Apr 23 Python
在Python操作时间和日期之asctime()方法的使用
May 22 Python
python中字符串前面加r的作用
Jun 04 Python
python版本坑:md5例子(python2与python3中md5区别)
Jun 20 Python
Python  unittest单元测试框架的使用
Sep 08 Python
python运行时强制刷新缓冲区的方法
Jan 14 Python
python实现对输入的密文加密
Mar 20 Python
Python GUI编程学习笔记之tkinter事件绑定操作详解
Mar 30 Python
Django windows使用Apache实现部署流程解析
Oct 12 Python
解决python绘图使用subplots出现标题重叠的问题
Apr 30 Python
python基于turtle绘制几何图形
Jun 15 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
一个颜色轮换的简单例子
2006/10/09 PHP
浅谈php和.net的区别
2014/09/28 PHP
php常用的url处理函数总结
2014/11/19 PHP
php简单socket服务器客户端代码实例
2015/05/18 PHP
jquery json 实例代码
2010/12/02 Javascript
用JS实现一个TreeMenu效果分享
2011/08/28 Javascript
40个有创意的jQuery图片和内容滑动及弹出插件收藏集之二
2011/12/31 Javascript
一个简单的网站访问JS计数器 刷新1次加1次访问
2012/09/20 Javascript
使用JavaScript实现连续滚动字幕效果的方法
2015/07/07 Javascript
原生JavaScript实现Ajax的方法
2016/04/07 Javascript
js实现多行文本框统计剩余字数功能
2017/03/28 Javascript
利用n工具轻松管理Node.js的版本
2017/04/21 Javascript
Angular.JS内置服务$http对数据库的增删改使用教程
2017/05/07 Javascript
React学习笔记之高阶组件应用
2018/06/02 Javascript
vue2.0页面前进刷新回退不刷新的实现方法
2018/07/31 Javascript
jquery实现动态改变css样式的方法分析
2019/05/27 jQuery
详解iview的checkbox多选框全选时校验问题
2019/06/10 Javascript
nodejs中使用archive压缩文件的实现代码
2019/11/26 NodeJs
[52:06]完美世界DOTA2联赛决赛日 Inki vs LBZS 第一场 11.08
2020/11/10 DOTA
python追加元素到列表的方法
2015/07/28 Python
使用Python对MySQL数据操作
2017/04/06 Python
python利用rsa库做公钥解密的方法教程
2017/12/10 Python
Python切片工具pillow用法示例
2018/03/30 Python
python中subprocess批量执行linux命令
2018/04/27 Python
python 实现将字典dict、列表list中的中文正常显示方法
2018/07/06 Python
基于CentOS搭建Python Django环境过程解析
2020/08/24 Python
Java如何调用外部Exe程序
2015/07/04 面试题
大三预备党员入党思想汇报
2014/01/08 职场文书
德语专业求职信
2014/03/12 职场文书
聚美优品恶搞广告词
2014/03/14 职场文书
科长竞聘演讲稿
2014/05/16 职场文书
文明礼仪标语
2014/06/13 职场文书
单位工作证明
2014/10/07 职场文书
《和时间赛跑》读后感3篇
2019/12/16 职场文书
Go中的条件语句Switch示例详解
2021/08/23 Golang
Python pyecharts案例超市4年数据可视化分析
2022/08/14 Python