强智教务自动刷新教务处成绩,更新后发邮件通知,以某ECUST华理为例子。此处的ECUST华理教务系统是18年9月后的新系统

Windows端或者挂在阿里云上都可以,下文示例是在Ubuntu上运行的。
这代码是拿某ECUST教务系统测试的,如果是其他学校的强智教务系统自己改一下,有可能页面元素的id,xpath什么的不一定相同。

  1. 安装好Chrome和Chromedriver,此处就不放教程了
  2. 安装好selenium这个包
  3. 如果想邮箱收到成绩更新通知就提前弄好smtp授权码等等,我这个代码用的qq邮箱发送的,如果是其他邮箱的话记得改端口
  4. 代码如下:
# -*- coding: utf-8 -*-
from selenium import webdriver
from time import sleep
from selenium.webdriver.support.ui import Select
import randomchrome_options = webdriver.ChromeOptions()
chrome_options.add_argument("--no-sandbox")class Chachengji(object):username = u"1018230x" # 填你的学号passwd = u"xxxxx" #填你的密码xueqi = '2018-2019-2' #你想查哪个学期的成绩,注意格式正确_user = "xxxxxxxxx@qq.com" # 你获得授权码的邮箱_pwd = "xxxxxxxx" # 授权码_to = "xxxxxxxx@qq.com" # 成绩更新后发邮件到哪个邮箱login_url = "http://inquiry.ecust.edu.cn/jsxsd/" # 登录页afterlogin_url = 'http://inquiry.ecust.edu.cn/jsxsd/framework/xsMain.jsp' # 登录后跳转到的页面kscj_url = "http://inquiry.ecust.edu.cn/jsxsd/kscj/cjcx_query" # 查成绩的页面,注意是要可以选学期的那个页面,不是学生成绩卡old = set(['线性代数','物理与现代科技','体育(2)','军事理论','Python程序设计','中国文化概论(MOOC)','大学生职业生涯规划与管理','高等数学(下)','大学英语Ⅱ','新生心理健康教育',]) # 用来存放已经出成绩了的科目的集合def __init__(self):print("开始查成绩")def login(self):self.driver.get(self.login_url)self.driver.find_element_by_id("userAccount").send_keys(self.username)self.driver.find_element_by_id("userPassword").send_keys(self.passwd)print("等待验证码,自行输入....")while True:if self.driver.current_url != self.afterlogin_url:sleep(1)else:breakdef send(self, text):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.driver.set_window_size(1400, 1000)self.login()self.driver.get(self.kscj_url)print('开始查询成绩')xueqi_select = Select(self.driver.find_element_by_id('kksj'))xueqi_select.select_by_value(self.xueqi)self.driver.find_element_by_id('btn_query').click()while True:dl = self.driver.find_elements_by_id('dataList')table1, table2 = dl[0], dl[1]table_rows1 = table1.find_elements_by_tag_name('tr')table_rows2 = table2.find_elements_by_tag_name('tr')data = {}for i in table_rows1[1:]:j = i.find_elements_by_tag_name('td')data[j[2].text] = j[10].text, j[11].text, j[10]for i in table_rows2[1:]:j = i.find_elements_by_tag_name('td')data[j[2].text] = j[10].text, j[11].text, j[10]new = set(data.keys())if new != self.old:data2 = new - self.oldtext = ''for i in data2:current_window = self.driver.current_window_handledata[i][2].click()handles = self.driver.window_handlesfor j in handles:if j != current_window:self.driver.switch_to.window(j)tb = self.driver.find_element_by_id('dataList')trs = tb.find_elements_by_tag_name('tr')for k in trs[1:]:tds = k.find_elements_by_tag_name('td')text += i + ':\n' + '\t  期末成绩:' + tds[1].text + '\t  平时成绩:' + \tds[2].text + '\t  总成绩:' + tds[3].text + '\n'self.driver.find_element_by_xpath('/html/body/div[1]/div/a').click()self.driver.switch_to.window(current_window)self.send(text)  # 将新出成绩的科目的成绩信息发送到邮箱self.old = new   # 将目前已出成绩的科目信息更新sleep(random.randint(10,15))self.driver.refresh()if __name__ == "__main__":a = Chachengji()a.start()

就把脚本挂在阿里云上跑着就行啦,成绩更新了就会发邮件到手机上的。
效果图:

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

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

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

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

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

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

    需提前装好chrome浏览器,python3,selenium等库,以及chromedriver,详细教程请自行百度!! 代码 # -*- coding: utf-8 -*-from selenium ...

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

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

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

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

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

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

  7. 计算机算法基础_强智科技继续冠名第十六届“强智杯”湖南省大学生计算机程序设计竞赛...

    2020年10月17-18日,第十六届"强智杯"湖南省大学生计算机程序设计竞赛在长沙理工大学成功举办,本次竞赛由省教育厅主办.省高教学会计算机教育专业委员会协办.长沙理工大学承办, ...

  8. python爬虫获取强智科技教务系统学科成绩(模拟登录+成绩获取)

    python爬取强智科技教务系统,以江苏科技大学为例:本人开发的系统作为参考:https://www.wjn1996.cn/estudy/tools/educationLogin.jsp?school ...

  9. python登录教务系统_强智科技教务系统python爬虫模拟登录分析(湖南)

    强智科技教务系统python爬虫模拟登录分析(湖南) 本文章仅用作于学习 前提:最近期末到来,想第一时间看到新出成绩的,于是就有了爬取学校教务系统自己的成绩并通过Qmsg酱推送到自己QQ上的想法,目前 ...

最新文章

  1. hadoop hive hbase 集群搭建
  2. ubuntu的codelite中代码运行后出现/usr/bin/codelite_exec: 22: /usr/bin/codelite_exec
  3. 一个月按多少天计算日工资合理
  4. 前端学习(1673):前端系列实战课程之最终封装
  5. Storage 使用
  6. 浙江省计算机二级办公软件高级应用技术考试时间,最新浙江省计算机二级办公软件高级应用技术考试大纲...
  7. STM32——库函数版——超声波测距模块
  8. UML?类图中聚合和组合的区别
  9. 计算机中常用的三种码制,码制
  10. 黑苹果电池电量补丁_[指南] 怎么给DSDT打补丁来显示电池状态
  11. idea背景颜色修改
  12. Renesas:RH850的FCL库移植与使用
  13. 牛客网项目1.7项目调试技巧
  14. python 波形包络线_Python信号分析之包络线(上包络线/下包络线)计算和绘制
  15. 自动白平衡(AWB)算法---1,色温曲线
  16. 用AI画一只漂亮的羽毛
  17. aec Gain 公式
  18. php测试号推送消息失败,php 给ios推送消息 提示这个错误
  19. unity塔防游戏怪物转向_萌宠打怪物手游下载-萌宠打怪物官方版下载
  20. 实用文库类网站推荐,必须收藏,工作学习都需要

热门文章

  1. python画易烊千玺_易烊千玺手绘画像步骤图,粉丝超爱的千玺手绘图
  2. 【2. Tmux 操作】
  3. mysql中创建唯一索引的关键字_MySQL中创建唯一索引的关键字是_______ 。
  4. 3D数学读书笔记——向量运算及在c++上的实现
  5. 诛仙手游服务器维护中,诛仙手游2021年7月22日更新维护公告
  6. Vim查找替换操作 --- 查找和替换
  7. Arcgis 10.3 与 ArcGIS Engine 10.3 安装与破解
  8. c语言简单的英汉词典系统
  9. 【毕业N年系列】 毕业第四年
  10. s-video CVBS接口 区别