用python计算成绩_Python使用splinter自动登录教务系统查询并计算成绩(CUMT新版教务系统)...
矿大2017年使用的是新版的教务系统,提交的密码是经过js加密的。
虽然我最后找到了加密的文件,可是js没有学过,看了半天硬是没看懂。
最后渣渣只能另找办法了,最后发现了一个神器splinter。这个库的使用我就不再赘述了,简单介绍一下我是怎么实现登录的
#login
from splinter.browser import Browser
class Login(object):
def __init__(self):
self.txtUserName = '******' #用户名
self.TextBox2 = '******' #密码
self.txtSecretCode = '' #验证码
def submit(self):
b = Browser(driver_name="chrome")
b.visit("http://202.119.206.62/jwglxt/xtgl/login_slogin.html")
b.fill("yhm", self.txtUserName)
b.fill("mm", self.TextBox2)
button = b.find_by_id('dl')
button.click()
cookie = 'JSESSIONID' + '=' + b.cookies['JSESSIONID'] #cookie的构成
return cookie
这样就完成登录了,并拿到了登录后的cookie,接下来就是爬取成绩页面和计算成绩了。
首先是各个库的引用和实例一个login对象
import requests
import json
import xlwt
from login import Login
login = Login()
因为是异步加载的,所以拿到的是json数据,转化成字典后使用
url = 'http://202.119.206.62/jwglxt/cjcx/cjcx_cxDgXscj.html?doType=query&gnmkdm=N305005&queryModel.showCount=100&queryModel.currentPage=1&queryModel.sortName=&queryModel.sortOrder=asc&time=0'
postData = {
# 'xnm': "2016", #学年开始的年份
# 'xqm': "12", #对应第几学期,3表示第一学期,12是第二学期
}
headers = {
'cookie': login.submit(), #cookie值是临时获得生成的
'user-agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36'
}
r = requests.post(url, headers = headers, data=postData)
js = json.loads(r.text)
这里的postdata可以修改,选择那个学年哪个学期,我这里是导入整个大一大二的,所以直接注释掉了,headers中可以拿到前面登录过的cookie访问成绩查询页面。
然后写入到excel文件中
sheet1.write(0, 0, '科目')
sheet1.write(0, 1, '成绩')
sheet1.write(0, 2, '学分')
sheet1.write(0, 3, '绩点')
print(js['items'][0]['xm'], js['items'][0]['bj'])
print("所有科目共有{}条记录".format(len(js['items'])))
count = 0
jqCj = []
tplt = "{:^6}\t{:^6}\t{:^6}\t{:^20}"
print(tplt.format( "学分", "成绩", "绩点", "科目"))
for infor in js['items']:
if infor['kcxzmc'] != "通识教育公选课" and infor['kcxzmc'] != "素质教育课":
if infor['cj'] == '良好':
infor['cj'] = 80
elif infor['cj'] == '优秀':
infor['cj'] = 90
print(tplt.format( infor['xf'], infor['cj'], infor['jd'], infor['kcmc']))
jqCj.append([float(infor['xf']), float(infor['cj']), float(infor['jd'])])
sheet1.write(count, 0, infor['kcmc'])
sheet1.write(count, 1, infor['cj'])
sheet1.write(count, 2, infor['xf'])
sheet1.write(count, 3, infor['jd'])
count += 1
最后的计算我就不说了。。。2333
贴一下整个过程中的几张截图:
1.首先是自动登录
2.然后是打印成绩和计算成绩
成绩不好,大家看看就行。
用python计算成绩_Python使用splinter自动登录教务系统查询并计算成绩(CUMT新版教务系统)...相关推荐
- python检查交换机端口状态_Python3 自动登录全部交换机查询MAC所在端口
#_*_ coding:utf8 _*_ import paramiko # SSH 登录操作模块 import time import re # 字符匹配查找模块 import logging # ...
- python办公自动化系列之金蝶K3自动登录(二)
Python微信订餐小程序课程视频 https://edu.csdn.net/course/detail/36074 Python实战量化交易理财系统 https://edu.csdn.net/cou ...
- Python进阶之使用Scrapy实现自动登录Github的两种方法(POST,FormRequest,from_response)
Python进阶之使用Scrapy实现自动登录Github的两种方法 1. 通过.FormRequest()实现登录github github1.py 2. 通过.FormRequest.from_r ...
- Ubuntu20.04实现Python基于Selenium实现上海大学校园网自动登录
Ubuntu20.04实现Python基于Selenium实现上海大学校园网自动登录 以anaconda环境为例,创建一个Selenium的虚拟环境: 一.安装selenium 1. conda cr ...
- python 浏览器自动化_Python利用splinter实现浏览器自动化操作方法
利用Splinter开发浏览器自动化操作,编写代码比较简单. 案例一: from splinter import Browser with Browser() as browser: # Visit ...
- python自动登录教程_python实现校园网自动登录的示例讲解
因为最近想用树莓派搞个远程监控系统,又因为学校的网需要从网页登录而树莓派又不方便搞个显示器带着,所以寻思着搞个能够自动登录校园网的脚本程序,省去了每次都要打开浏览器输入账号密码的烦恼. 1.工具 火狐 ...
- python自动登录校园网 密码_python实现校园网自动登录的示例讲解
因为最近想用树莓派搞个远程监控系统,又因为学校的网需要从网页登录而树莓派又不方便搞个显示器带着,所以寻思着搞个能够自动登录校园网的脚本程序,省去了每次都要打开浏览器输入账号密码的烦恼. 1.工具 火狐 ...
- python校园网登录_python实现校园网自动登录的示例讲解
python实现校园网自动登录的示例讲解 来源:中文源码网 浏览: 次 日期:2018年9月2日 [下载文档: python实现校园网自动登录的示例讲解.txt ] (友情提示:右键点上 ...
- python已打开页面获取信息_python+selenium实现自动登录网页获取信息(一)
我用的是一个教师继续教育的网站,进行演示和模拟,网站:http://cas.study.yanxiu.jsyxsq.com/auth/login?service=http%3A%2F%2Fwww.17 ...
最新文章
- 给妹子讲python-S01E19解析Python内嵌作用域与函数闭包
- 配置字段(居左,居中,居右,高度自适应)
- spark官方文档_Apache Spark 文档传送门
- 编程笔试(解析及代码实现):猴子吃桃。猴子第一天吃了若干个桃子,当即吃了一半,还不解馋,又多吃了一个…的C++、Java、Python、C#等语言代码实现
- c++:opencv的安装和配置
- asp.net拦截器
- 常见的异步方式async 和 await
- 三菱a系列motion软体_三菱M70A/64SM重要功能比较
- my.ini修改后服务无法启动_Spring Cloud Eureka 服务实现不停机(Zero-downtime)部署
- 网络防火墙单向和双向_单向晶闸管与双向晶闸管之间的不同之处
- 【揭秘】我几乎面了所有知名公司的算法岗位
- linux shell 随机字符生成单词
- matlab 加随机数,随机数加上100:Matlab
- iOS-登录,注册隐私政策,用户协议
- android tv 应用安装器,论Android智能电视盒子必装应用之——QQ音乐TV版
- 天正建筑(TArch)8.0破解版下载(包含SP1、全系列注册机)
- 文件创建失败 无法继续下载_iOS更新失败了怎么办?教你如何排除故障解决问题...
- 2021小白Python入门学习记录Day3(win10系统、Python3.9、使用Pycharm)python高级数据类型(字符串、列表、元组、字典、集合) 及其操作
- 均值归一化_深度神经网络中的归一化技术
- python绘制指数函数图像及性质_python实现画出e指数函数的图像
热门文章
- windows下oracle启动流程,笔者设置win7系统手动启动Oracle服务的还原步骤
- 集显也能硬件编码:Intel SDK 各种音视频编解码学习详解
- (八)Listener
- 高压电源模块12V升110V/150V/250V/350V稳压直流电源
- MAStudio三步打造移动OA系统开发生态链
- Uber jvm profiler 使用
- python游戏-pygame-飞翔的小鸟
- SWAN学习笔记——安装与模拟实例
- (转载) 驻足 思考 -- 提升 思维方式
- 基于Hadoop的电商广告点击数的分析与可视化(Shell脚本执行与大屏可视化设计)