爬取教务在线获取成绩

2024-04-26 23:32

本文主要是介绍爬取教务在线获取成绩,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

    • 1.查看网页源代码获取信息
    • 2.模拟浏览器登陆
    • 3.成功登陆之后开始你的表演
    • 4.筛选数据
    • 5.结果图

1.查看网页源代码获取信息

1.1首先进入教务在线网页,查看网页源代码,找到登陆账号,密码,以及验证码的位置,可以右键单击需要查找的目标查看元素,找到其在标签中的位置。
在这里插入图片描述
1.2找到验证码的相对路径,我们就可以模拟请求获取验证码并显示,src="…"这是相对地址
在这里插入图片描述1.3错误登陆系统,查看登陆时浏览器的账号,密码,验证码等参数如何上传,如下图通过post请求的方法将账号密码以及验证码通过表单数据上传
在这里插入图片描述

2.模拟浏览器登陆

2.1 知道了验证码图片的相对地址之后,将网页地址与相对地址进行拼接并将验证码图片获取到本地

#将浏览器中几个重要的参数要补全,难以抉择选择请求参数就 全部写上
url='http://jwzx.usc.edu.cn'
try: kv={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:70.0) Gecko/20100101 Firefox/70.0'}Data={'page':'1','rows':'15','sort':'ReleaseData','order':'DESC'}img_Url = 'http://jwzx.usc.edu.cn' + '/Core/verify_code.ashx'Img1 = requests.session()Img = Img1.get(img_Url, headers=kv)

2.2 这时候获取到的并不是图片资源,而是二进制编码的数据,将二进制数据写入本地的文件,并通过opencv库对图片文件进行读取

file = "H:\\python\\yanzhengma.png"playFile = open(file, 'wb')playFile.write(Img.content)playFile.close()img = cv2.imread("H:\\python\\yanzhengma.png", 1)cv2.imshow("1", img)cv2.waitKey(0)

此时验证码能够显示
在这里插入图片描述2.3 post请求登陆系统,将账号、密码、输入的验证码一起提交 此处要点:提交验证码时必须将获取验证码时得到cookie一并上传,这样输入的验证码code才能与获取下来的验证码进行匹配

Code=input("验证码:")
data={'UserName':"your account",'Password':"your password",'Code':Code
}
kv1={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:70.0) Gecko/20100101 Firefox/70.0','Connection':'keep-alive',#'Cookie':Img.cookies,'X-Requested-with':'XMLHttpRequest',}
try:res=Img1.post('http://jwzx.usc.edu.cn/Login/Login',headers=kv1,cookies=requests.utils.dict_from_cookiejar(Img.cookies),data=data)print(res.status_code)res.encoding=res.apparent_encodingprint(res.text)
except:print("登陆失败")

3.成功登陆之后开始你的表演

3.1 打开成绩的目录,按下F12找到,刷新网页查看网络请求,找到相应的请求网址,如下图
在这里插入图片描述3.2 登陆之后,响应数据包中的cookie相当于密令,每一次获取数据操作都得带着它, 请求数据时需要使用这个cookie

Form_Data={'termCode':'2018-2019-2','sort':'Id','order':'ASC'
}
'''Data1={'batchId':'20190530095305274886878ad9552af',
'sort':'CourseName','order':'ASC'}'''
try:res1=requests.post('http://jwzx.usc.edu.cn/Student/StuTermCourseScore/GetList',cookies=requests.utils.dict_from_cookiejar(res.cookies),headers=kv1,data=Form_Data)print("请求状态:",res1.status_code)print(res1.text)
except:print("获取成绩失败")

4.筛选数据

4.1 相应的数据可以通过F12查看数据的格式,一般都为json格式
JSON格式4.2 在这里不能直接提取数据,需要使用json库的函数将其转化为python的数据格式
转化4.3 根据python数据格式提取需要的数据
在这里插入图片描述

5.结果图

成绩太low就不展示了…wuwuwu
在这里插入图片描述
程序源代码下载地址请点击

这篇关于爬取教务在线获取成绩的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/938957

相关文章

kkFileView在线预览office的常见问题以及解决方案

《kkFileView在线预览office的常见问题以及解决方案》kkFileView在线预览Office常见问题包括base64编码配置、Office组件安装、乱码处理及水印添加,解决方案涉及版本适... 目录kkFileView在线预览office的常见问题1.base642.提示找不到OFFICE组件

Python获取浏览器Cookies的四种方式小结

《Python获取浏览器Cookies的四种方式小结》在进行Web应用程序测试和开发时,获取浏览器Cookies是一项重要任务,本文我们介绍四种用Python获取浏览器Cookies的方式,具有一定的... 目录什么是 Cookie?1.使用Selenium库获取浏览器Cookies2.使用浏览器开发者工具

Java获取当前时间String类型和Date类型方式

《Java获取当前时间String类型和Date类型方式》:本文主要介绍Java获取当前时间String类型和Date类型方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,... 目录Java获取当前时间String和Date类型String类型和Date类型输出结果总结Java获取

Linux下在线安装启动VNC教程

《Linux下在线安装启动VNC教程》本文指导在CentOS7上在线安装VNC,包含安装、配置密码、启动/停止、清理重启步骤及注意事项,强调需安装VNC桌面以避免黑屏,并解决端口冲突和目录权限问题... 目录描述安装VNC安装 VNC 桌面可能遇到的问题总结描js述linux中的VNC就类似于Window

C#监听txt文档获取新数据方式

《C#监听txt文档获取新数据方式》文章介绍通过监听txt文件获取最新数据,并实现开机自启动、禁用窗口关闭按钮、阻止Ctrl+C中断及防止程序退出等功能,代码整合于主函数中,供参考学习... 目录前言一、监听txt文档增加数据二、其他功能1. 设置开机自启动2. 禁止控制台窗口关闭按钮3. 阻止Ctrl +

一文详解如何使用Java获取PDF页面信息

《一文详解如何使用Java获取PDF页面信息》了解PDF页面属性是我们在处理文档、内容提取、打印设置或页面重组等任务时不可或缺的一环,下面我们就来看看如何使用Java语言获取这些信息吧... 目录引言一、安装和引入PDF处理库引入依赖二、获取 PDF 页数三、获取页面尺寸(宽高)四、获取页面旋转角度五、判断

Linux在线解压jar包的实现方式

《Linux在线解压jar包的实现方式》:本文主要介绍Linux在线解压jar包的实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux在线解压jar包解压 jar包的步骤总结Linux在线解压jar包在 Centos 中解压 jar 包可以使用 u

Python使用OpenCV实现获取视频时长的小工具

《Python使用OpenCV实现获取视频时长的小工具》在处理视频数据时,获取视频的时长是一项常见且基础的需求,本文将详细介绍如何使用Python和OpenCV获取视频时长,并对每一行代码进行深入解析... 目录一、代码实现二、代码解析1. 导入 OpenCV 库2. 定义获取视频时长的函数3. 打开视频文

MySQL 获取字符串长度及注意事项

《MySQL获取字符串长度及注意事项》本文通过实例代码给大家介绍MySQL获取字符串长度及注意事项,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录mysql 获取字符串长度详解 核心长度函数对比⚠️ 六大关键注意事项1. 字符编码决定字节长度2

python3如何找到字典的下标index、获取list中指定元素的位置索引

《python3如何找到字典的下标index、获取list中指定元素的位置索引》:本文主要介绍python3如何找到字典的下标index、获取list中指定元素的位置索引问题,具有很好的参考价值,... 目录enumerate()找到字典的下标 index获取list中指定元素的位置索引总结enumerat