教务系统爬虫

    xiaoxiao2025-03-06  15

    正方教务系统助手

    The helper of ZhengFang System 项目地址:https://github.com/SimpleBrightMan/ZhengFang 欢迎fork,star! 详细分析参见:http://blog.csdn.net/nghuyong/article/details/51622888 我的更多爬虫文章: 构建开放免费的代理IP池:http://blog.csdn.net/nghuyong/article/details/78415048 新浪微博爬虫:http://blog.csdn.net/nghuyong/article/details/78415066

    1.项目定义

    这个项目实现了正方教务系统的一套API: 包括模拟登陆,个人信息查询,课表获取,成绩查询等等。 随着API的不断完善于扩充,可以很方便的作为后台服务。 比如教务系统手机客户端,桌面客户端,也可以作为某些特定应用需要学生课表,信息的后台。

    同时这个项目定义为助手,会继续开发便捷的工具:

    自动完成评教任务期末新的成绩公布,邮件通知分学期,分学年绩点计算公选课抢课功能

    2.项目依赖

    爬虫相关:requests网页解析:lxml,BeautifulSoup数据存储:peewee数据库:Sqlite

    3.项目结构

    ZhengFang.db 数据库model.py 模型层,通过ORM与数据库相连spider.py 业务层,网页爬虫,项目入口parseHtml.py 业务层,网页解析工具

    4.项目功能

    项目均已江南大学正方教务系统为例测试。若在你学校测试不通过欢迎开issue。

    1.模拟登陆

    登陆有两种方式:

    1).默认登陆:

    需要处理验证码。将验证码下载到本地。code.jpg。人工识别验证码后,手动输入验证码。实现登陆。

    2).绕过验证码登陆:

    由于正方教务系统的漏洞在若存在default5.asp页面,可以不用验证码直接登陆。可以从default3,default4,都试一试。

    2.个人信息获取

    通过教务系统个人信息页面,抓取,个人信息(真的有很多信息!)并持久化保存到数据库中。

    3.课表获取

    通过抓取的个人信息读到学生入学的年份,在结合当前时间,就可以知道能够抓取到哪些学期的课表。

    例如学生2014年入学,当前是2016年8月,说明至少可以抓取到:

    2014-2015年度 第 1 学期

    2014-2015年度 第 2 学期

    2015-2016年度 第 1 学期

    2015-2016年度 第 2 学期

    这4个学期的课表,当然由于现在是2016年8月,可能可以抓取到2016-2017年度第 1 学期课表,可以试着抓取。

    将抓取到的课表持久化到数据库中。

    课表:

    课程:

    4.成绩查询

    通过教务系统成绩查询页面中的“历年成绩”抓取,课程成绩,并持久化到数据库中

    5.分学期分学年绩点计算

    根据抓取下来的成绩,通过(总的(学分*绩点)/总的学分)分别计算各个学期的绩点与各个学年的绩点

    分学期:

    分学年:

    转载请注明原文地址: https://ju.6miu.com/read-1296919.html
    最新回复(0)