【Python 实战】Python 采集大学教务系统成绩单
前言
采集教务系统成绩单是一个非常有意义的项目。在现代教育中,教务系统已经成为了学校管理和教学工作的重要组成部分。然而,由于各种原因,教务系统的成绩单并不能下载的,这给我们带来了很多不必要的麻烦和困扰。因此,采集教务系统成绩单的项目具有非常重要的意义。
在本文中,我们将详细介绍采集教务系统成绩单的背景和目的,并阐述该项目实战所涉及的相关知识点和技术细节。
采集数据
我们上一篇介绍了,如何采集大家熟悉的百度贴吧的排行榜。今天,我们来学习采集教务系统里面的成绩单,把自己的成绩采集下来。
发送请求
我们首先确定我们的目标网址,对我们需要获取的数据。
我们要把每一行的数据获取下来,我们接下来用到开发者工具。我们看成绩是在什么位置。是不是在网页源代码中。接下来,我们发送请求,获取网页源代码。
每个学校教务系统不一样,但是,原理都是一样的,我们通过抓包分析,看到,我们学校把成绩放到了一个数据包里面,一个学期一个数据包。
那么,接下来就简单了,我们只需要请求数据,当然,我们肯定要加上 cookies,毕竟里面包含了我们的登录信息。
我们看看前面代码是怎么写的。
我们这里直接多页遍历,我们学校只做了 cookies 检查,对请求头没有要求。
这段代码首先定义了一个包含多个元素的列表 semesters
,其中每个元素表示一个学期的信息。然后,使用 for
循环遍历列表中的每个元素,并使用 requests.get()
函数向指定的 URL 发送 GET 请求。在请求中,我们设置了一些请求头信息,以确保我们能够正确地解析 URL 并获取正确的响应。最后,我们打印了 URL、响应和响应中的内容。
获取数据
这段代码首先从 JSON 响应中获取了学期和学生的绩点信息,并将其存储在变量 semester
和 semesterId2studentGrades
中。然后,使用 for
循环遍历 semesterId2studentGrades
中的每个元素,并使用 course
属性获取该学期的课程信息。接着,使用 course_nameZh
属性获取课程名称,使用 credits
属性获取课程学分,使用 courseProperty_name
属性获取课程属性名称,如果不存在则返回 "NOLL"。最后,使用 gp
属性获取绩点,使用 gaGrade
属性获取成绩,使用 gradeDetail
属性获取明细原文,使用 gradeDetail
属性获取明细原文中的数据类型标识符。
这里就是 json 取值,没有什么难度,只要写好这些,就可以获取到我们想的内容,我们看看效果。
保存数据
保存数据就简单了,我们已经练习了很多次。
这段代码首先打开一个名为 personal_scores.csv
的文件,并指定使用 a
模式打开文件。然后,使用 csv.DictWriter()
函数创建一个 CSV 写入器,并指定要写入的列名。在这个例子中,我们指定了 fieldnames
参数,它包含了我们要写入的列名。
接下来,我们使用 csv_writer.writeheader()
方法写入列名。这个方法会将列名写入文件的第一行。
最后,我们使用 csv_writer.writerow()
方法写入数据。在这个例子中,我们写入了一个包含学期、课程名称、课程学分、课程类型、成绩、学分绩点和成绩明细的列表。
接下来就是写入字典,保存下来。
这段代码使用 csv_writer.writerow()
方法将 dit
字典写入 CSV 文件中。fieldnames
参数指定了要写入的列名。在这个例子中,我们指定了 ['学期','课程名称', '课程学分', '课程类型', '成绩', '学分绩点', '成绩明细']
。
总结
总之,采集教务系统成绩单是一个非常有意义的项目实战,它不仅可以采集成绩单,还可以提升我们采集数据的能力。在实现过程中,我们需要注意数据的准确性和完整性,并采取必要的措施来保证项目的安全性和可靠性。
版权声明: 本文为 InfoQ 作者【BROKEN】的原创文章。
原文链接:【http://xie.infoq.cn/article/871493a597d500dca1d88f33f】。文章转载请联系作者。
评论