基于Java爬虫的勤工助学值班自动安排实现

2020-04-01 03:42谢飞宏罗文辉
科学咨询 2020年10期
关键词:课表爬虫空闲

谢飞宏 罗文辉 黄 田 何 磊

(重庆邮电大学通信与信息工程学院 重庆 400065)

引 言

我校勤工助学系统中现在的值班安排是采用人工操作的方式来实现的。这种方法造成了人力资源与时间上的浪费。针对此问题,如何实现自动排班,这就是一个值得研究的问题。目前的排班方式需要每个同学先把自己的课表以截图的方式发给负责人,再让负责人通过手工的方式整理各个同学的课表进行排班。这不仅需要浪费负责人大量的时间和精力,而且很容易排漏或排错某个同学而导致全部重排,因此需要一种更快捷、准确的方式来进行排班。

网络爬虫技术就是通过一段程序模仿浏览器上网自动地从网上获取特定信息的技术,是非人工获取网络信息的重要手段。经过几年的发展,目前出现了许多成熟的开发爬虫框架,最为流行的网络爬虫常用框架基本都是基于java或python语言的。因此,基于Java的爬虫技术完全可以自动获取学生课表信息,进而更便捷地进行排班,完全符合该文的技术需求。

一、功能需求分析

(一)用户登录功能。用户需要在登录后才可以使用该系统进行排班,不能通过该系统进行用户注册,因为该系统只是为了减轻负责人的工作负担,受众比较小。为了减轻服务器的压力,该系统不提供注册功能。负责人可以联系系统管理获取登录所需的用户名和密码。

(二)学号输入功能。此功能为本系统的重要组成部分。用户通过该功能可以对数据获取和最后的排班做出一定的要求和限制。比如,输入待值班学生的学号,这是获取学生课表的必须前提条件。获取学生课表后,为了方便下次查询,该系统需要将学生课表信息保存到数据中。因此,系统需要建立一张学生课表信息数据表,并定时更新和维护该表,以保证数据的一致性。

(三)表格下载功能。此功能为本系统的核心功能,需要根据学生的空闲时间形成值班表,然后将结果写入excel表格中。在利用Java操作excel表格时,需要用到POI或者JXL组件。最后为用户提供下载excel的功能,通过浏览的文件下载功能将值班表下载到用户电脑里。

二、可行性分析

SpringBoot框架是基于Java的一个成熟的微服务框架。Jsoup是Java提供的一个用于解析HTML页面的解析器组件,也已经十分成熟,完全可以承担该文的后端技术支撑。自动排班系统需要的数据通过Jsoup提供的API来实现数据爬取,使用Jsoup解析html获取到系统需要的数据,通过对学生课表数据的获取、筛选,得到一个学生周一到周五的空闲时间情况。该系统将每个待排班同学的空闲时间信息保存下来,得到在一个时间点内,可值班的所有同学信息,再利用计算机的快速计算能力进行排班,得到最佳的值班表。

三、系统设计与实现

(一)系统流程。首先,遵循MVC设计模式对自动排班系统进行搭建,系统获取用户输入的待排班的学生学号,以此来获取指定学生的课表。其次,系统将学生课表存入数据库,同时把值班表写入excel表格,并记录excel表格的路径,以便下次查询,减少系统响应时延。最后,该系统通过网络下载的形式将结果发送到负责人的电脑里。流程图如图1所示:

图1 系统流程图

(二)数据库设计。本系统数据将涉及两张表,一张表为用户表,记录有权限访问本系统的用户。具体属性包含主键id、用户名、用户密码、创建时间、更新时间;另一张表为学生课程表,记录学生行课时间。具体属性包含主键id、学生学号、学生姓名、行课时间点、创建时间、更新时间。

(三)系统模块设计。页面模块,主要是html文件,用于向用户进行页面展示。该页面有两个html文件:index.html为登录页面,用户通过这个页面输入用户和密码;成功登录后进入downExcel.html页面,该页面主要提供学生学号的输入框,以及“下载excel”的下载按钮。

数据自动获取模块,该模块主要是根据用户输入学生学号获取学生课表和学生姓名,会先去查找数据已经保存指定学生的课表。如果没有通过爬虫技术去教务在线获取学生课表,存入数据库后,会返回学生课表。

排班计算模块,数据获取模块能够获取每个学生的课表,计算每个值班时间点空闲学生人员及人员相关信息。它根据人数多少对值班时间点进行优先级排序,优先满足空闲学生人员少的时间点。该模块完成值班表后,将写入服务器固定路径的excel中,并将excel的下载路径返回给浏览器。

四、实际测试效果

我们打开浏览器输入地址后出现登陆界面,能够成功进入该系统。同时页面的成功显示证明,该系统的登录页面部分在实现逻辑和代码编写上没有问题。

输入学号并点击获取excel后,出现设计所对应的页面。表明系统后端已经完成值班确定,并将excel发到前端页面供用户下载。表明学号输入功能在逻辑和代码实现上没有问题,该功能已经实现。其通过学号获取了学生课表,进行了排班,即自动获取数据模块和数据库相应的设计成功实现。Excel下载功能可以得到一个可用的excel表格,表明基于Java爬虫的勤工助学值班自动安排已经成功实现,排班负责人可以通过线上的方式,方便、快捷地进行排班。

五、结论

在线自动排班,我们利用爬虫技术可以自动获取网络信息的特点,应用到系统设计中。该系统划分为3个子模块,一是使用JAVA爬虫技术,通过对网上课表信息的抓取,获取学生行课时间和空闲时间;二是得出每个时间点的空闲人员,根据空闲人员数最少最先安排的规则进行值班人员的确定,最后形成一张excel表格;三是用户通过浏览器的形式下载、观看。这就让用户可以快速、便捷地完成排班工作,节省了大量时间。

猜你喜欢
课表爬虫空闲
利用网络爬虫技术验证房地产灰犀牛之说
学生出招解决”日课牌“问题
如果我是校长
基于Python的网络爬虫和反爬虫技术研究
“鸟”字谜
西湾村采风
大数据背景下校园舆情的爬虫应用研究
彪悍的“宠”生,不需要解释
INNO EDU 创新教育大会
大数据环境下基于python的网络爬虫技术