爬取教务在线获取成绩

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

相关文章

SpringBoot服务获取Pod当前IP的两种方案

《SpringBoot服务获取Pod当前IP的两种方案》在Kubernetes集群中,SpringBoot服务获取Pod当前IP的方案主要有两种,通过环境变量注入或通过Java代码动态获取网络接口IP... 目录方案一:通过 Kubernetes Downward API 注入环境变量原理步骤方案二:通过

基于Python实现一个简单的题库与在线考试系统

《基于Python实现一个简单的题库与在线考试系统》在当今信息化教育时代,在线学习与考试系统已成为教育技术领域的重要组成部分,本文就来介绍一下如何使用Python和PyQt5框架开发一个名为白泽题库系... 目录概述功能特点界面展示系统架构设计类结构图Excel题库填写格式模板题库题目填写格式表核心数据结构

使用Python实现获取屏幕像素颜色值

《使用Python实现获取屏幕像素颜色值》这篇文章主要为大家详细介绍了如何使用Python实现获取屏幕像素颜色值,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 一、一个小工具,按住F10键,颜色值会跟着显示。完整代码import tkinter as tkimport pyau

python获取cmd环境变量值的实现代码

《python获取cmd环境变量值的实现代码》:本文主要介绍在Python中获取命令行(cmd)环境变量的值,可以使用标准库中的os模块,需要的朋友可以参考下... 前言全局说明在执行py过程中,总要使用到系统环境变量一、说明1.1 环境:Windows 11 家庭版 24H2 26100.4061

使用Python获取JS加载的数据的多种实现方法

《使用Python获取JS加载的数据的多种实现方法》在当今的互联网时代,网页数据的动态加载已经成为一种常见的技术手段,许多现代网站通过JavaScript(JS)动态加载内容,这使得传统的静态网页爬取... 目录引言一、动态 网页与js加载数据的原理二、python爬取JS加载数据的方法(一)分析网络请求1

通过cmd获取网卡速率的代码

《通过cmd获取网卡速率的代码》今天从群里看到通过bat获取网卡速率两段代码,感觉还不错,学习bat的朋友可以参考一下... 1、本机有线网卡支持的最高速度:%v%@echo off & setlocal enabledelayedexpansionecho 代码开始echo 65001编码获取: >

使用Python实现调用API获取图片存储到本地的方法

《使用Python实现调用API获取图片存储到本地的方法》开发一个自动化工具,用于从JSON数据源中提取图像ID,通过调用指定API获取未经压缩的原始图像文件,并确保下载结果与Postman等工具直接... 目录使用python实现调用API获取图片存储到本地1、项目概述2、核心功能3、环境准备4、代码实现

Python实现获取带合并单元格的表格数据

《Python实现获取带合并单元格的表格数据》由于在日常运维中经常出现一些合并单元格的表格,如果要获取数据比较麻烦,所以本文我们就来聊聊如何使用Python实现获取带合并单元格的表格数据吧... 由于在日常运维中经常出现一些合并单元格的表格,如果要获取数据比较麻烦,现将将封装成类,并通过调用list_exc

通过C#获取Excel单元格的数据类型的方法详解

《通过C#获取Excel单元格的数据类型的方法详解》在处理Excel文件时,了解单元格的数据类型有助于我们正确地解析和处理数据,本文将详细介绍如何使用FreeSpire.XLS来获取Excel单元格的... 目录引言环境配置6种常见数据类型C# 读取单元格数据类型引言在处理 Excel 文件时,了解单元格

Java根据IP地址实现归属地获取

《Java根据IP地址实现归属地获取》Ip2region是一个离线IP地址定位库和IP定位数据管理框架,这篇文章主要为大家详细介绍了Java如何使用Ip2region实现根据IP地址获取归属地,感兴趣... 目录一、使用Ip2region离线获取1、Ip2region简介2、导包3、下编程载xdb文件4、J