矿大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新版教务系统)...相关推荐

  1. python检查交换机端口状态_Python3 自动登录全部交换机查询MAC所在端口

    #_*_ coding:utf8 _*_ import paramiko # SSH 登录操作模块 import time import re # 字符匹配查找模块 import logging # ...

  2. python办公自动化系列之金蝶K3自动登录(二)

    Python微信订餐小程序课程视频 https://edu.csdn.net/course/detail/36074 Python实战量化交易理财系统 https://edu.csdn.net/cou ...

  3. Python进阶之使用Scrapy实现自动登录Github的两种方法(POST,FormRequest,from_response)

    Python进阶之使用Scrapy实现自动登录Github的两种方法 1. 通过.FormRequest()实现登录github github1.py 2. 通过.FormRequest.from_r ...

  4. Ubuntu20.04实现Python基于Selenium实现上海大学校园网自动登录

    Ubuntu20.04实现Python基于Selenium实现上海大学校园网自动登录 以anaconda环境为例,创建一个Selenium的虚拟环境: 一.安装selenium 1. conda cr ...

  5. python 浏览器自动化_Python利用splinter实现浏览器自动化操作方法

    利用Splinter开发浏览器自动化操作,编写代码比较简单. 案例一: from splinter import Browser with Browser() as browser: # Visit ...

  6. python自动登录教程_python实现校园网自动登录的示例讲解

    因为最近想用树莓派搞个远程监控系统,又因为学校的网需要从网页登录而树莓派又不方便搞个显示器带着,所以寻思着搞个能够自动登录校园网的脚本程序,省去了每次都要打开浏览器输入账号密码的烦恼. 1.工具 火狐 ...

  7. python自动登录校园网 密码_python实现校园网自动登录的示例讲解

    因为最近想用树莓派搞个远程监控系统,又因为学校的网需要从网页登录而树莓派又不方便搞个显示器带着,所以寻思着搞个能够自动登录校园网的脚本程序,省去了每次都要打开浏览器输入账号密码的烦恼. 1.工具 火狐 ...

  8. python校园网登录_python实现校园网自动登录的示例讲解

    python实现校园网自动登录的示例讲解 来源:中文源码网    浏览: 次    日期:2018年9月2日 [下载文档:  python实现校园网自动登录的示例讲解.txt ] (友情提示:右键点上 ...

  9. python已打开页面获取信息_python+selenium实现自动登录网页获取信息(一)

    我用的是一个教师继续教育的网站,进行演示和模拟,网站:http://cas.study.yanxiu.jsyxsq.com/auth/login?service=http%3A%2F%2Fwww.17 ...

最新文章

  1. 给妹子讲python-S01E19解析Python内嵌作用域与函数闭包
  2. 配置字段(居左,居中,居右,高度自适应)
  3. spark官方文档_Apache Spark 文档传送门
  4. 编程笔试(解析及代码实现):猴子吃桃。猴子第一天吃了若干个桃子,当即吃了一半,还不解馋,又多吃了一个…的C++、Java、Python、C#等语言代码实现
  5. c++:opencv的安装和配置
  6. asp.net拦截器
  7. 常见的异步方式async 和 await
  8. 三菱a系列motion软体_三菱M70A/64SM重要功能比较
  9. my.ini修改后服务无法启动_Spring Cloud Eureka 服务实现不停机(Zero-downtime)部署
  10. 网络防火墙单向和双向_单向晶闸管与双向晶闸管之间的不同之处
  11. 【揭秘】我几乎面了所有知名公司的算法岗位
  12. linux shell 随机字符生成单词
  13. matlab 加随机数,随机数加上100:Matlab
  14. iOS-登录,注册隐私政策,用户协议
  15. android tv 应用安装器,论Android智能电视盒子必装应用之——QQ音乐TV版
  16. 天正建筑(TArch)8.0破解版下载(包含SP1、全系列注册机)
  17. 文件创建失败 无法继续下载_iOS更新失败了怎么办?教你如何排除故障解决问题...
  18. 2021小白Python入门学习记录Day3(win10系统、Python3.9、使用Pycharm)python高级数据类型(字符串、列表、元组、字典、集合) 及其操作
  19. 均值归一化_深度神经网络中的归一化技术
  20. python绘制指数函数图像及性质_python实现画出e指数函数的图像

热门文章

  1. windows下oracle启动流程,笔者设置win7系统手动启动Oracle服务的还原步骤
  2. 集显也能硬件编码:Intel SDK 各种音视频编解码学习详解
  3. (八)Listener
  4. 高压电源模块12V升110V/150V/250V/350V稳压直流电源
  5. MAStudio三步打造移动OA系统开发生态链
  6. Uber jvm profiler 使用
  7. python游戏-pygame-飞翔的小鸟
  8. SWAN学习笔记——安装与模拟实例
  9. (转载) 驻足 思考 -- 提升 思维方式
  10. 基于Hadoop的电商广告点击数的分析与可视化(Shell脚本执行与大屏可视化设计)