基于网络爬虫技术的教学管理系统教师客户端的实现方法研究
2022-03-07陈礼念王瑞超
鲁 斌,陈礼念,王瑞超
(五邑大学智能制造学部,江门 529020)
0 引言
随着现代信息技术的发展,校园信息化经过多年的建设,为学校提高行政管理效率和教学质量、促进科研和教研教改等方面都作出了巨大的贡献。目前几乎所有的学校都拥有了成熟完备的信息化系统,高等院校尤其如此。高校的信息化建设更加完善,基本上都建成了自己的校园局域网,并接入了互联网。由于主管部门的关怀和高校自身的重视,很多高校是把信息化当做基础设施建设的内容之一。近年来在大数据和云计算等新技术的加持下,高校里的各种软硬件系统比比皆是[1-3]。然而,这种遍地开花的信息系统在给师生提供自动化操作便利的同时也带来了一些麻烦。比如,现在高校里大多数信息系统都是B/S架构的,这种架构意味着系统的大部分功能都在服务器端实现,通用性强,但是一些个性化操作却难以实现。相比B/S 架构,C/S 架构的界面和操作可以丰富很多,能满足用户的个性化功能要求。由于高校的各种管理系统都是用了多年的成熟系统,一般不会轻易更改或升级,即使改动其代价也非常高。然而,有些系统经过长时间的使用,由于使用者的习惯或其他某些原因,可能会产生一些新的个性化使用需求。那么,在不改变现有信息化系统软硬件配置的情况下,根据B/S和C/S 两种架构的特点,人们可以为新的个性化需求而定制一些专用的功能操作。
本文正是基于这种思想而为学校中最常使用的教学管理系统增加了一个教师或教学管理人员使用的PC 客户端,实现一些个性化需求。为了实现这一目标,本文利用网页爬虫技术从教学管理系统服务器端爬取一些必要的数据,用于定制PC客户端程序。
1 个性化需求
教学管理系统大部分都是B/S模式的,五邑大学的教学管理系统也不例外,能满足绝大部分通用需求。五邑大学教学管理系统功能比较全面,能做到统一用户界面,并操作简单。教学管理系统的使用者基本上是学校的师生,细分之下,包括系统管理员、在册的学生、教学的教师,还有一些参与教学活动的行政管理人员等用户。不同角色的用户,其使用权限也各自不同,使用的频率也都不一样。相比之下,学生应该使用的最少,主要就是在开学时看一下课程表,期末时看一下考试时间和考试分数。得益于移动互联网的兴盛和手机的普及,不少学生会使用类似“超级课程表”之类的APP 或微信小程序,直接访问教学管理系统的频次就更加低了。在系统运行稳定之后,系统管理员的工作也越来越少。而老师和教务员等教学相关的工作人员就成为了访问教学管理系统的主力军。出于工作需要,他们使用教学管理系统更加频繁。因此,对教学管理系统的系统管理端和学生端的研究并无必要,但是需要对教学管理系统教师端的功能进行一些梳理。对于参与教学活动的专任教师和教学管理人员来说,教学管理系统主要分为三大功能模块:学籍管理、教务管理和个人事务。五邑大学的教学管理系统在教学相关的工作人员所能看到的功能框架如图1所示。
图1 教学管理端的框架图
从图1可以看出,五邑大学的教学管理系统的教师端功能还是比较全面的,但是整个系统的功能远远不止这些,并非全貌。其中,教务管理模块包括排课管理、选课管理、考务管理和成绩管理等功能子模块;学籍管理对于教学教务人员来说,主要用于对学生的基本学籍信息的查询,这个功能无需多言;个人事务模块主要是针对专任教师的,又分为教学工作、成绩管理、信息查询和实践管理等多个功能子模块。
在众多的子模块里,排课管理子模块的使用者一般是教辅人员,根据排课规则在上学期期末对下学期的课程进行开课安排,最终形成各门功课或各个老师具体的课程表;该模块还提供一个课堂速报的查询,给学生一个快速报修某课程的机会。选课管理子模块方便学生根据自己的专业或兴趣来选择修哪些课程,并由教学管理人员进行最后的审批;而教师可以在此查询到相关学生修课的详细情况。考务管理子模块用于当前学期各门功课的期末考试安排等,这个模块主要是确定课程考试的时间、地点和监考老师。而考试类型有教务处统考、学院考和随堂考三种,这是学期初由任课老师根据课程的性质和教学大纲而选择的。如果某门功课的考试类型是教务处统考,那么就有教务处的工作人员统一安排时间和地点,再由该门功课的开课院系的教务员安排监考老师。如果考试类型是学院考,那么就有开课院系的教务员直接确定考试时间、地点和监考老师。对于随堂考,一般就安排在该门功课的最后一次课考,或者上完课了由任课老师和学生商量时间和地点;如果学生人数较多,可以要求教务员安排监考老师。教务管理中的成绩管理子模块则主要用于学生成绩的查询,教师或教学管理人员可以从课程成绩总库里以学期学年、修读方式、学生院系、课程大类、年级、课程分类、专业名称、考试性质、成绩方式、课程名称、学生姓名或学号等关键词进行查询,也可以统计分析报表。教学工作子模块提供的功能较多,与教学相关的一些功能,任课老师都能使用。成绩管理子模块提供了成绩录入的入口。信息查询子模块提供了个人信息的维护和培养方案的查询并下载的功能。实践管理子模块主要用于对大四学生的毕业设计或论文题目的一些管理。
因为教学管理系统是通过浏览器打开的,浏览器端查询浏览的功能非常强大,但是某些业务处理能力相对较弱。比如打印的处理,浏览器自带的打印功能一般只能打印当前页面的内容,这显然不能满足各种信息系统的要求。而为了满足打印的需求,B/S 模式的系统一般会把数据导入到Excel 或Word 文档里再下载到客户端本地,然后利用Office的打印控件实现打印的功能。这样的打印流程稍显繁琐。
以前每个学期教师的课程一旦安排,那么课表基本上就固定了,每周上课的时间和地点不会发生太大的变化。而现在情况发生了变化,新的排课体系排出来的上课安排每周都可能不一样,因此教师访问教学管理系统中课表那一栏的频率大大增加,严重的时候可能每周都会登录教学管理系统去查看自己的课表。如果每次仅仅是为了查看课表而登录教学管理系统,也是有点繁琐。
教学管理系统还有安排监考的功能栏目。全校每一门功课的考试由教务处汇同各个院系的教务员根据实际情况统一安排,确定了考试的时间地点之后,再由相关院系的教务员安排监考的老师,然后教务员发通知给监考老师。这是教学管理系统中监考安排的通用流程。然而,由于一些院系出台了一些新的绩效政策,监考次数也包含在年终的绩效里,这在之前是没有的。教务员需要统计每一学年本学院每个老师的监考次数,而教学管理系统不能直接得出总的数据,只能由教务员手工计算了。
还有很多其他的功能需求,是由各个岗位的不同用户基于自己的操作习惯或新的形势而产生的,限于篇幅,在此不一一赘述。如果增加一个定制化的客户端,就可以增强客户端包括打印在内的多种业务处理能力,实现不同用户的个性化需求。
2 系统架构及组成
本客户端设计的时候已经充分考虑到可伸缩性,以方便未来的功能扩展。另外,无论功能怎么扩展,本客户端还必须具备的一些基本功能。因此,规划本客户端的基本框架如图2所示。
从图2可以看出,本文所述的程序基础功能如下:
图2 基本框架图
(1)常用信息查询。可以用于查询校历和本校作息时间这类全校公共信息。
(2)院系通讯录。用于保存维护本院系的教师通讯录,同时也用于排功能的实现。
(3)备份。设定好备份路径,可以执行手工数据备份和还原功能。
(4)教师课程表。利用爬虫技术把每个学期当前客户端用户的课程表爬取到本机存放,并随时能显示出来。这样教师只需登录一次教学管理系统就获取了当前学期的课表了。
(5)排考管理。以院系通讯录为基础,选取合适的教师参加各门课程的监考,以尽量保证参与监考的所有老师每一学年的监考次数相等或大致相等。
(6)一些可扩展性的功能。这是预留部分,除了课程表和排考管理之外,依据未来具体使用者的使用习惯或要求而开发的一些功能。
上述这些基本功能一般都会以菜单项的形式显示在主界面的菜单栏上。
3 关键技术实现
在对现有软硬件系统不进行改造升级的前提下,又不改变用户已经形成的操作使用习惯,一个合适的方法就是在定制化的客户端里整合进去一个浏览器控件。长期以来,浏览器分为三个主要的阵营,谷歌为首的Chrome、火狐浏览器、微软的浏览器。经过多年的竞争和发展,火狐浏览器已然式微,微软的浏览器中一系列版本的IE 已经被自家放弃了,新的Edge 浏览器使用的其实也是与Chrome 相同的内核,只是各自进行了不同的封装。国内的一些公司开发的浏览器如搜狗、360等都采取了双核模式,其兼容模式是封装了IE 内核,极速模式也是封装了Chrome 浏览器组件。所以,可以说目前很多浏览器几乎都使用了同一种内核:Chromium Embedded Framework(CEF),这是一个支持HTML 5标准的开源框架。考虑到兼容性和易用性,本文也采用基于CEF 框架封装的浏览器控件CEFSharp,它是一款.Net 编写的浏览器包[4-5]。使用C#作为主要的编程语言,把CEFSharp 嵌入到程序中,开发一个Winform 桌面程序,使用Microsoft Access 数据库保存运行中产生的各种信息,以增强教师端的业务处理能力。
3.1 CEFSharp的使用
定制化的客户端是由WinForm 窗体构成,并嵌入CEFSharp 组件。再在WinForm 窗体上添加一个Menu控件,通过各种菜单项与CEFSharp交互实现一些定制化的爬虫功能。CEFSharp 组件内置了很多接口,用于控制右键菜单、弹出窗口的方式、键盘监听、下载控制、协议控制、请求及响应控制等。在程序启动后,使用者看到的就是一个浏览器的界面。爬取特定的页面内容时,在继承了ResourceRequestHandler 接口的类中,重写OnResourceLoadComplete 等方法,以截获想要的返回数据。
3.2 爬虫技术
通过网络爬虫技术可以获取网络数据并进行处理。通用的爬虫程序一般通过一个或若干个入口网址按照一定的策略抓取网页中所需内容并保存下来,再提取并过滤网页中的有效地址放到待抓取的网址队列里作为下一次爬取的入口地址。可见爬虫程序的主要框架包括4个部分:地址管理模块、网页下载模块、网页解析模块和数据存储模块。地址管理模块用于存放和管理各种超链接,包括已经爬取过的网页链接和尚未爬取的网页链接。网页下载模块的主要功能是通过模拟客户端发送HTTP请求,待服务器端响应后下载网页以实现爬取工作。网页解析模块是爬虫程序的核心组件,主要用于对下载存储的网页信息进行解析,以获得更加直观有用的数据。数据存储模块的功能是把解析模块解析出来的数据存储起来,存储为文件或者直接存储到数据库里用于后续的利用[6-9]。后续的使用因应用场景不同而不同。
本文的爬虫程序的技术原理与通用性爬虫类似。因为是针对特定网站的,只需要分析该网站中某个具体网页的内容及地址链接。在具体的实践过程中,需要用到抓包工具对网络传输发送与接收的数据包进行分析。抓包工具有很多,但是既然本文仅针对教学管理系统,没有特别高的需求,所以就利用浏览器自带的开发者工具(F12功能)作为抓包工具对相关页面进行分析,确定请求方法及标头、响应方式及标头、涉及元素或事件和所要获取数据的格式,通常为XML或JSON等格式;再想办法解析这些数据提取到有用的信息保存到本地数据库中;最终在本地以其他的形态呈现出来方便使用者利用。
3.2.1 教师课程表的提取及展示
用户登录教学管理系统后,客户端会跟踪记录登陆者的账号(一般是教工号)。任课老师访问一次自己的课表之后客户端就会通过内置的爬虫程序爬取到该老师当前学期的课表数据,并保存在本地数据库里,以后该老师不需要登录系统就可以查看自己的当期课表了,并且随时可以打印自己的课程表。
在点击课表查询子模块时,利用浏览器的F12 功能,可以查看对应页面的组成和各种元素,以及请求标头与响应标头等数据。响应标头的信息显示课程表数据是JSON 格式,因此,在OnResourceLoadComplete 方法中,通过重写实现IResponseFilter 接口进行拦截和筛选响应数据。最终呈现结果如图3所示。
图3 课程表图示
图3显示的信息就是正式的课程表内容,点击“打印课表”按钮就可以打印出正式的课程表。如果已经填写了班级联系人,在打印的时候也会在课程表下方附上班级联系人一并打印出来。
3.2.2 排监考信息的提取及展示
因为监考场次会与收入挂钩,所以尽量显得公平并且次数明确而不会混乱,只有这样才能让人没有怨言。目前的做法是针对某一门课程的考试院系那一级的教学管理人员会根据实际情况确定考试的时间和地点,再选择合适的监考老师。监考老师的选择要考虑两个情况,一是优先选择监考次数最少的老师,二是选择的监考老师不能和他们自己的课程或考试有冲突。安排好监考老师后教学管理人员会把这次监考记录下来,统计各个老师的监考次数,以方便下次排考时参考。虽然排考都是在教学管理系统里操作的,但是目前的教学管理系统里并没有直接统计各个老师的监考次数,所以每次排考都要计算一下哪些老师的监考次数最少。有些负责排考的教学管理人员就只好使用最传统的做法,每一学年就自己打印一张教师监考次数表,然后在监考次数那一列里为每个老师画“正”字,一个“正”字表示监考5次,这其实是很不方便的。
为了减轻排考人员的工作,实现自动记录统计监考次数,本客户端设计了一个同事通讯录,包括教工号、姓名、电话号码等信息。每次教学管理人员登录系统安排考试的时候,本客户端会再生成一个线程用于爬取已经发布了的正式考试信息保存到本地数据库里。利用浏览器的开发者工具对考试安排的查询请求的响应标头进行分析,发现返回的也是JSON 格式的数据。这些JSON 数据是嵌套的,第一个对象的值就是安排考试的总数。根据这个数值,再结合第二个对象里封装的每条排考记录的序号,并比对本地数据库里的数据,爬虫程序会模拟分页爬取到当前所有没爬过的记录。这要记录浏览器访问时的cookies 内容,并以此模拟向服务器发送多页的请求。有时数据量可能会比较大,所以爬取程序是在后台以异步线程的方式运行,以避免影响到其他操作。爬取下来并经过整理后的监考记录如图4所示。
图4 监考记录显示
从图4可以看出,抓取的数据经过取舍整理后保留了主要的信息。当已经公开的监考信息被爬取到本地后,就可以统计每个老师的监考次数了,并按从小到大的顺序展示出来。在挑选新的监考老师时,排考人员可以方便地选择合适的监考老师,也无需再通过画“正”字来记录每个老师的监考次数了。
4 结语
利用爬虫技术对教学管理系统进行客户端开发是一个动态的、长期的过程,因为个性化需求会发生变化。本文介绍了当前的教学管理系统的特点和架构,并探讨了当前的一些需求,进而论述了利用爬虫技术而开发的教学管理系统客户端的基本框架、思路及关键技术。客户端程序还考虑了可扩展性,对教学管理系统的使用起到了良好的辅助作用。这种技术不仅仅可以用于教学管理系统,还可用于校园的其他Web 系统或者其他领域。因此,本文所述具有一定的应用价值,可以举一反三推广到其他领域,期待能为其他高校的建设提供参考。由于内置了CEFSharp,本客户端程序也可以当成一般的浏览器使用。不过,有一点不足,就是CEFSharp安装包有些大,比较占用空间。