需提前装好chrome浏览器,python3,selenium等库,以及chromedriver,详细教程请自行百度!!

代码

# -*- coding: utf-8 -*-from selenium import webdriver
from selenium.webdriver.support.ui import Select
from time import sleep
chrome_options = webdriver.ChromeOptions()class Qiangke(object):login_url = "https://inquiry.ecust.edu.cn/jsxsd/view/jzdl/index_jzdl.jsp"  #登录页面,我这里是华理的家长端,需要输入学号姓名身份证,当然也可以自行改为学生端的连接,对应项改为学号密码即可initmy_url = 'https://inquiry.ecust.edu.cn/jsxsd/view/jzdl/jzMain.jsp' #这里填写登录后的初始页面select_url = "https://inquiry.ecust.edu.cn/jsxsd/xsxk/xsxk_index?jx0502zbid=B87E6388B7A64FD3907324EC1F4C7004"  #这里填写抢课链接xh = u"10182308"  #填写学号name = '啊啊啊'   #填写名字sfz = '123456789123456789' #填写身份证_user = "592435776@qq.com" #填写你的邮箱(用于发邮件提醒抢课成功)_pwd = "abcdefgh"  #授权码,在邮箱里获得_to = "592435776@qq.com" #收件人邮箱,可以写自己的,帮别人抢课就发别人的course_category = u'专业内跨年级选课'  # 这里填写选课种类,这个脚本只能抢跨年级,跨专业,和公选,需输入完整的名字如“专业内跨年级选课”,“跨专业选课”,“公选课选课”class_name = u"物联网"  #这里输入你想抢的课的名字(关键字即可)teacher_name = u"黄如"  #这里输入你想抢的课的老师的名字def __init__(self):print("开始抢课")def login(self):self.driver.get(self.login_url)self.driver.find_element_by_id("xh").send_keys(self.xh)self.driver.find_element_by_id("xm").send_keys(self.name)self.driver.find_element_by_id("id_card").send_keys(self.sfz)print("等待验证码,自行输入....")while True:if self.driver.current_url != self.initmy_url:sleep(1)else:breakdef send(self, text, send_msg=False):import smtplibfrom email.mime.text import MIMETextmsg = MIMEText(text)msg["Subject"] = "你选课成功了!"msg["From"] = self._usermsg["To"] = self._tos = smtplib.SMTP_SSL("smtp.qq.com", 465)s.login(self._user, self._pwd)s.sendmail(self._user, self._to, msg.as_string())s.quit()def start(self):self.driver = webdriver.Chrome(chrome_options=chrome_options)self.login()self.driver.get(self.select_url)self.driver.find_element_by_link_text(self.course_category).click()self.driver.switch_to.frame(self.driver.find_element_by_xpath('//*[@id="mainFrame"]'))self.driver.find_element_by_id('kcxx').send_keys(self.class_name)self.driver.find_element_by_id('skls').send_keys(self.teacher_name)self.driver.find_element_by_xpath("/html/body/div[2]/input[5]").click()cnt = 1while True:try:self.driver.find_element_by_link_text('选课').click()except:self.driver.switch_to.default_content()self.driver.switch_to.frame(self.driver.find_element_by_xpath('//*[@id="mainFrame"]'))self.driver.find_element_by_link_text('选课').click()dig_alert = self.driver.switch_to.alertdig_alert.accept()text = dig_alert.textif text != '选课失败:此课堂选课人数已满!' and text != '':self.send('{}  选课成功'.format(self.class_name))breakelif text == '':dig_alert.accept()cnt += 1if cnt % 200 == 0:print(cnt)if __name__ == "__main__":qiangke = Qiangke()qiangke.start()

使用流程

  1. 将脚本内信息填好改好
  2. 运行脚本,此时会打开chrome并且打开登录页,脚本会自行填写学号姓名身份证等信息,需要等你填写验证码

    3.填写好后登录,即可自动跳转至抢课页面进行抢课,这时即可等待捡漏成功(成功后会有邮件提醒

python3 + selenium 强智教务 抢课脚本 #当然是捡漏(是真的劳火(华东理工大学 某ecust(暂时只能抢跨专业、跨年级、公选))相关推荐

  1. python3 + selenium 进行强智教务成绩的刷新以及通知成绩(华东理工大学 某ecust)

    强智教务自动刷新教务处成绩,更新后发邮件通知,以某ECUST华理为例子.此处的ECUST华理教务系统是18年9月后的新系统 Windows端或者挂在阿里云上都可以,下文示例是在Ubuntu上运行的. ...

  2. 强智教务系统API学习进度条--(以完结)

    前言 想写一个基于微信公众号的课表及成绩查询系统,记录学习过程与实现. 开发环境 IDEA JDK1.8 强智教务系统API文档 API目录 登录 (以实现) 时间信息 (以实现) 课程信息 成绩信息 ...

  3. 每日获取强智教务系统课表,并发送短信到学生手机!爬虫真牛逼!

    自从学校换了强智的教务系统后,学校的app的查课表功能基本就报废了,记不住课表的我无奈自己动手. 功能实现:如果当天有课,在当天早上6点30以短信的形式自动发送课表至手机 首先我想的是利用模拟登陆然后 ...

  4. 正方教务抢课脚本开发,可代开发

    原理,利用 Tampermonkey 在抢课页面,载入自己写的js脚本,实现自动"捡漏",代开发回复下 分析 提交按钮 是调用了什么函数 在脚本里直接调用,或者照着写一个一直调用就 ...

  5. 模拟教务评教(强智教务)—一件评教实现原理

    前言 前不久,学校有个校园帮助型app某某圈因为一件评教功能被教务批评了.现在有很多查成绩,查课程的app,他们的实现原理到底是啥了.这两天来到发小扬州这边,学习实现了这个功能,并且用java和pyt ...

  6. 强智教务系统——获取课表

    两个接口: 获取个人信息以及登录成功后header中的token: http://jwxt.xxx.edu.cn/app.do?method=authUser&xh={$学号}&pwd ...

  7. 广金强智教务系统模拟登录

    文章目录 网站首页 表单提交 java实现加密 验证结果 验证码问题 登录请求 网站首页 表单提交 f12查看提交发现有encodeInp()加密字符串 java实现加密 conwork.js var ...

  8. python实现强智科技教务系统抢课(两种方法)

    前言 又到了选课的时间,又一次被教务系统的预选给安排了,硬是一门都没选中.于是想实现有没有自动捡课的方法.就整体分为两种方法,一种是获取get请求然后由python多线程提交去选课,一种是利用自动化测 ...

  9. 强智科技教务系统验证码识别

    强智科技验证码识别 前言 由于近期在写一个教务系统的爬虫程序,但是网站的验证码让人很头疼,所以笔者临时找了一些资料学习了一下,本人python用的很少,而且在机器学习这块也是新手,从来没有接触过,所以 ...

最新文章

  1. 现在,用音频也能指挥GAN生成图像了
  2. version.dll劫持注入模版
  3. 学python还是javascript_你觉得学 Python 还是 Java 更好找工作?
  4. .net mysql查询数据库连接_asp.net连接查询SQL数据库并把结果显示在网页上(2种方法)...
  5. 2020顶会指南:征稿截止时间、举办地、举办时间一览
  6. cvi中c语言只保留两位小数,保留两位小数,但要求只显示一位小数,怎么实现?...
  7. 设计模式之单例模式8种实现方式,其三:懒汉式(线程不安全)
  8. WPF入门教程系列十六——WPF中的数据绑定(二)
  9. 使用 Keras搭建一个深度卷积神经网络来识别 c验证码
  10. 在单链表中删除指定值的节点
  11. 【C语言】之冒泡排序法(详解)
  12. oracle sql 查询全年日期,oracle下sql创建指定年份全年日期表(区分工作日)
  13. 23、Camunda DMN决策初探
  14. [4.2]-AutoSAR零基础学习-XCP 测量/校准 <<2>>
  15. 项目管理方法适用于战略规划吗?
  16. 村医计算机在线考试答案,资讯详情-村医去卫生院换电脑,却被“威胁”停业整顿?-医德帮诊所生态服务平台-为基层诊所赋能...
  17. 经典面试题:64匹马,8个赛道,找出前4名最少比赛多少场?
  18. pythoc_autocad_标注_all_横线_竖线
  19. Azure考试认证经验
  20. 兄弟连是骗子靠营销上市,兄弟连骗子的真相到底是什么

热门文章

  1. Revit剪贴板用法复制一样的楼层及构件一键剪切功能
  2. openwrt (一)入手
  3. CF1550C Manhattan Subarrays(思维)
  4. 深圳市让全民真正做到:主动检测,知艾防艾,共享健康。
  5. 搭建个人网站--搭建网站
  6. 安卓开发艺术探索!各种风格的Android面试题进来了解一下,含爱奇艺,小米,腾讯,阿里
  7. boost——入门指南
  8. css中 盒模型的属性包括(),css的盒子模型属性有哪些?css盒子模型相关属性的介绍...
  9. CSS3--用CSS3实现无限循环的无缝滚动
  10. 实例解析MySQL性能瓶颈排查定位