Python采集大学教务系统成绩单实战示例

 更新时间:2023年04月18日 09:46:36   作者:极客飞虎  
这篇文章主要为大家介绍了Python采集大学教务系统成绩单实战示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

前言

采集教务系统成绩单是一个非常有意义的项目。在现代教育中,教务系统已经成为了学校管理和教学工作的重要组成部分。然而,由于各种原因,教务系统的成绩单并不能下载的,这给我们带来了很多不必要的麻烦和困扰。因此,采集教务系统成绩单的项目具有非常重要的意义。

在本文中,我们将详细介绍采集教务系统成绩单的背景和目的,并阐述该项目实战所涉及的相关知识点和技术细节。

采集数据

我们上一篇介绍了,如何采集大家熟悉的百度贴吧的排行榜。今天,我们来学习采集教务系统里面的成绩单,把自己的成绩采集下来。

发送请求

我们首先确定我们的目标网址,对我们需要获取的数据。

我们要把每一行的数据获取下来,我们接下来用到开发者工具。我们看成绩是在什么位置。是不是在网页源代码中。接下来,我们发送请求,获取网页源代码。

每个学校教务系统不一样,但是,原理都是一样的,我们通过抓包分析,看到,我们学校把成绩放到了一个数据包里面,一个学期一个数据包。

那么,接下来就简单了,我们只需要请求数据,当然,我们肯定要加上cookies,毕竟里面包含了我们的登录信息。

我们看看前面代码是怎么写的。

semesters = ["44", "45", "46", "66", "126", ]
for Semester in semesters:
    url = f'http://jwxt.aqnu.edu.cn/student/for-std/grade/sheet/info/73127?semester={Semester}'
    headers = {
        'Cookie': 'cookies',       
    }
    res = requests.get(url, headers=headers)
    print(url, res)

我们这里直接多页遍历,我们学校只做了cookies检查,对请求头没有要求。

这段代码首先定义了一个包含多个元素的列表 semesters,其中每个元素表示一个学期的信息。然后,使用 for 循环遍历列表中的每个元素,并使用 requests.get() 函数向指定的 URL 发送 GET 请求。在请求中,我们设置了一些请求头信息,以确保我们能够正确地解析 URL 并获取正确的响应。最后,我们打印了 URL、响应和响应中的内容。

获取数据

id2semesters = res.json()['id2semesters']
semester = id2semesters[f'{Semester}']['nameZh']
semesterId2studentGrades = res.json()['semesterId2studentGrades'][f'{Semester}']
for semesterId2studentGrade in semesterId2studentGrades:
    course = semesterId2studentGrade['course']  # 课程
    course_nameZh = course['nameZh']  # 课程名称
    credits = course['credits']  # 课程学分
    try:
        courseProperty = semesterId2studentGrade['courseProperty']
        courseProperty_name = courseProperty['name']
    except TypeError:
        courseProperty_name = "NOLL"
    gp = semesterId2studentGrade['gp']  # 绩点
    gaGrade = semesterId2studentGrade['gaGrade']  # 成绩
    gradeDetails = semesterId2studentGrade['gradeDetail']  # 明细原文
    gradeDetail = re.findall('data-typeid=.*?>(.*?)</span>', gradeDetails)

这段代码首先从 JSON 响应中获取了学期和学生的绩点信息,并将其存储在变量 semester 和 semesterId2studentGrades 中。然后,使用 for 循环遍历 semesterId2studentGrades 中的每个元素,并使用 course 属性获取该学期的课程信息。接着,使用 course_nameZh 属性获取课程名称,使用 credits 属性获取课程学分,使用 courseProperty_name 属性获取课程属性名称,如果不存在则返回 "NOLL"。最后,使用 gp 属性获取绩点,使用 gaGrade 属性获取成绩,使用 gradeDetail 属性获取明细原文,使用 gradeDetail 属性获取明细原文中的数据类型标识符。

这里就是json取值,没有什么难度,只要写好这些,就可以获取到我们想的内容,我们看看效果。

保存数据

保存数据就简单了,我们已经练习了很多次。

f = open('个人成绩单.csv', mode='a', encoding='utf-8_sig', newline='')
csv_writer = csv.DictWriter(f, fieldnames=['学期','课程名称', '课程学分', '课程类型', '成绩', '学分绩点',
                                           '成绩明细'])

这段代码首先打开一个名为 personal_scores.csv 的文件,并指定使用 a 模式打开文件。然后,使用 csv.DictWriter() 函数创建一个 CSV 写入器,并指定要写入的列名。在这个例子中,我们指定了 fieldnames 参数,它包含了我们要写入的列名。

接下来,我们使用 csv_writer.writeheader() 方法写入列名。这个方法会将列名写入文件的第一行。

最后,我们使用 csv_writer.writerow() 方法写入数据。在这个例子中,我们写入了一个包含学期、课程名称、课程学分、课程类型、成绩、学分绩点和成绩明细的列表。

接下来就是写入字典,保存下来。

dit = {
    '学期': semester,
    '课程名称': course_nameZh,
    '课程学分': credits,
    '课程类型': courseProperty_name,
    '成绩': gaGrade,
    '学分绩点': gp,
    '成绩明细': gradeDetail,
}
csv_writer.writerow(dit)

这段代码使用 csv_writer.writerow() 方法将 dit 字典写入 CSV 文件中。fieldnames 参数指定了要写入的列名。在这个例子中,我们指定了 ['学期','课程名称', '课程学分', '课程类型', '成绩', '学分绩点', '成绩明细']。

总结

总之,采集教务系统成绩单是一个非常有意义的项目实战,它不仅可以采集成绩单,还可以提升我们采集数据的能力。在实现过程中,我们需要注意数据的准确性和完整性,并采取必要的措施来保证项目的安全性和可靠性。

以上就是Python采集大学教务系统成绩单实战示例的详细内容,更多关于Python采集教务系统成绩单的资料请关注脚本之家其它相关文章!

相关文章

  • 详解Pycharm出现out of memory的终极解决方法

    详解Pycharm出现out of memory的终极解决方法

    这篇文章主要介绍了详解Pycharm出现out of memory的终极解决方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-03-03
  • python 插入Null值数据到Postgresql的操作

    python 插入Null值数据到Postgresql的操作

    这篇文章主要介绍了python 插入Null值数据到Postgresql的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-03-03
  • 带你用Python实现Saga 分布式事务的方法

    带你用Python实现Saga 分布式事务的方法

    在这篇文章里,我们介绍了 SAGA 的理论知识,也通过一个例子,完整给出了编写一个 SAGA 事务的过程,涵盖了正常成功完成,异常情况,以及成功回滚的情况,需要的朋友参考下吧
    2021-09-09
  • Python lxml库的简单介绍及基本使用讲解

    Python lxml库的简单介绍及基本使用讲解

    lxml是XML和HTML的解析器,其主要功能是解析和提取XML和HTML中的数据,本文重点给大家介绍Python lxml库的简单介绍及基本使用讲解,感兴趣的朋友跟随小编一起看看吧
    2020-12-12
  • django框架基于模板 生成 excel(xls) 文件操作示例

    django框架基于模板 生成 excel(xls) 文件操作示例

    这篇文章主要介绍了django框架基于模板 生成 excel(xls) 文件操作,结合具体实例形式分析了Django框架基于模板生成excel的实现步骤与相关操作技巧,需要的朋友可以参考下
    2019-06-06
  • 基于Python pyecharts实现多种图例代码解析

    基于Python pyecharts实现多种图例代码解析

    这篇文章主要介绍了基于Python pyecharts实现多种图例代码解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-08-08
  • python异步爬虫之多线程

    python异步爬虫之多线程

    这篇文章主要介绍了python异步爬虫之多线程,多线程可以为相关阻塞的操作单独开启线程或者进程,阻塞操作可以异步执行,但是无法无限制开启多线程或多进程,下面我们一起学习详细内容,需要的朋友可以参考一下
    2022-02-02
  • pytorch 批次遍历数据集打印数据的例子

    pytorch 批次遍历数据集打印数据的例子

    今天小编就为大家分享一篇pytorch 批次遍历数据集打印数据的例子,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-12-12
  • Python使用Numpy实现Kmeans算法的步骤详解

    Python使用Numpy实现Kmeans算法的步骤详解

    将物理或抽象对象的集合分成由类似的对象组成的多个类的过程被称为聚类。这篇文章主要介绍了Python使用Numpy实现Kmeans算法,需要的朋友可以参考下
    2021-11-11
  • Python基于OpenCV的视频图像处理详解

    Python基于OpenCV的视频图像处理详解

    OpenCV是一个开源的,跨平台的计算机视觉库,它采用优化的C/C++代码编写,能够充分利用多核处理器的优势。本文主要和大家来聊聊基于Python OpenCv的视频图像处理,感兴趣的可以了解一下
    2023-02-02

最新评论