爬取教务在线获取成绩

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

相关文章

使用Python实现获取网页指定内容

《使用Python实现获取网页指定内容》在当今互联网时代,网页数据抓取是一项非常重要的技能,本文将带你从零开始学习如何使用Python获取网页中的指定内容,希望对大家有所帮助... 目录引言1. 网页抓取的基本概念2. python中的网页抓取库3. 安装必要的库4. 发送HTTP请求并获取网页内容5. 解

C++常见容器获取头元素的方法大全

《C++常见容器获取头元素的方法大全》在C++编程中,容器是存储和管理数据集合的重要工具,不同的容器提供了不同的接口来访问和操作其中的元素,获取容器的头元素(即第一个元素)是常见的操作之一,本文将详细... 目录一、std::vector二、std::list三、std::deque四、std::forwa

使用Python高效获取网络数据的操作指南

《使用Python高效获取网络数据的操作指南》网络爬虫是一种自动化程序,用于访问和提取网站上的数据,Python是进行网络爬虫开发的理想语言,拥有丰富的库和工具,使得编写和维护爬虫变得简单高效,本文将... 目录网络爬虫的基本概念常用库介绍安装库Requests和BeautifulSoup爬虫开发发送请求解

MySQL使用binlog2sql工具实现在线恢复数据功能

《MySQL使用binlog2sql工具实现在线恢复数据功能》binlog2sql是大众点评开源的一款用于解析MySQLbinlog的工具,根据不同选项,可以得到原始SQL、回滚SQL等,下面我们就来... 目录背景目标步骤准备工作恢复数据结果验证结论背景生产数据库执行 SQL 脚本,一般会经过正规的审批

Android App安装列表获取方法(实践方案)

《AndroidApp安装列表获取方法(实践方案)》文章介绍了Android11及以上版本获取应用列表的方案调整,包括权限配置、白名单配置和action配置三种方式,并提供了相应的Java和Kotl... 目录前言实现方案         方案概述一、 androidManifest 三种配置方式

Python如何获取域名的SSL证书信息和到期时间

《Python如何获取域名的SSL证书信息和到期时间》在当今互联网时代,SSL证书的重要性不言而喻,它不仅为用户提供了安全的连接,还能提高网站的搜索引擎排名,那我们怎么才能通过Python获取域名的S... 目录了解SSL证书的基本概念使用python库来抓取SSL证书信息安装必要的库编写获取SSL证书信息

Win32下C++实现快速获取硬盘分区信息

《Win32下C++实现快速获取硬盘分区信息》这篇文章主要为大家详细介绍了Win32下C++如何实现快速获取硬盘分区信息,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 实现代码CDiskDriveUtils.h#pragma once #include <wtypesbase

Android如何获取当前CPU频率和占用率

《Android如何获取当前CPU频率和占用率》最近在优化App的性能,需要获取当前CPU视频频率和占用率,所以本文小编就来和大家总结一下如何在Android中获取当前CPU频率和占用率吧... 最近在优化 App 的性能,需要获取当前 CPU视频频率和占用率,通过查询资料,大致思路如下:目前没有标准的

golang获取prometheus数据(prometheus/client_golang包)

《golang获取prometheus数据(prometheus/client_golang包)》本文主要介绍了使用Go语言的prometheus/client_golang包来获取Prometheu... 目录1. 创建链接1.1 语法1.2 完整示例2. 简单查询2.1 语法2.2 完整示例3. 范围值

javaScript在表单提交时获取表单数据的示例代码

《javaScript在表单提交时获取表单数据的示例代码》本文介绍了五种在JavaScript中获取表单数据的方法:使用FormData对象、手动提取表单数据、使用querySelector获取单个字... 方法 1:使用 FormData 对象FormData 是一个方便的内置对象,用于获取表单中的键值