Android解析网页课表的算法设计与实现

    申圣兵+姚方元

    

    

    

    摘要:该文通过对常见校园APP中提取网页课表的技术进行了分析,介绍了其核心的算法及具体实现,最后提出了进一步完善的方法。

    关键词:校园APP;网页课表;网页解析

    中图分类号:TP311 文献标识码:A文章编号:1009-3044(2016)12-0215-02

    由于智能手机的迅速普及,校园类APP异常火爆,课程格子、超级课程表等等校园应用APP受到了广大学生们的喜爱,这些校园类应用APP以学生们经常使用的课表作为切入点,是它们成功的一项重要的因素,那么它们是如何将课表移植到手机上的呢?

    高校的教务系统,主要是正方、青果、强智等几种。如正方官网介绍成功案例有1000多家高校,它们的课表基本以网页形式展示,所以,提取网页课表成为这类校园应用APP比较核心的算法。

    1 算法分析

    我们以正方教务系统提供的课表为例来分析算法设计,下面是正方系统提供的课表图。

    1.1课表分析

    课表以一个18行9列的表格显示,第一行显示星期,第二行显示早晨,第三行开始到倒数第二行之间为课程显示信息,中间又有两行分别用来分隔上午和下午、下午和晚上,最后一行显示课表的备注信息。

    课表第1列显示早晨、上、下午和晚上,第2列显示节次,第3列到最后显示相关课程信息。

    1.2算法设计思路

    课表的信息是显示在一个以表格的第3行第3列为左上角,倒数第二行最后一列为右下角这样的一个矩形区域的,由于我校一天最多只有10节课,一周7天,所以我们以一个10行7列的二维数组对课程表信息进行扫描,以便提取课程开始节次、结束节次及星期等关键信息,如果其他学校安排的一天课程节次数不同,就将数组稍作调整。由于网页表格显示具有不同于常规表格的特点,这给我们设计算法带来了难处。比如一行中某一列如果有课程信息:计算机应用基础【必修】

    2节/周[1-2]节(01-06,08-18)

    【给排水高1501】

    【教二栋208】,由于我们的课程安排一般是一次2节或以上,所以标记会有rowspan属性,它的值就是安排的连续节次,这样它占用了下面行的列数,下面相应行的列数即标记数就会减少。如果正常的列数为7列,那么到下面的行数就可能出现4列或5列甚至更少的情况,这是网页表格常见的特征。

    2 算法实现

    2.1课表实体类的实现

    我们设计一个实体类Course来存储课程信息,它的设计如下:

    2.2课表解析关键算法的实现

    课表解析我们是通过jsoup来完成的,jsoup 是一款Java 的HTML解析器,可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API,可通过DOM,CSS以及类似于jQuery的操作方法来取出和操作数据。

    首先我们移除一些无用的数据:我们需要移除第1、2、7、12、15、16、17、18行及相应行第1列数据,如下图所示:

    然后,我们通过循环遍历行、列来得到课程信息,并将它存储到Course类的一个集合里面。如下图所示:

    这其中,用到了一个获取当前课程信息为周几的一个函数fillMap(column, map, i),它的作用就是用来解决上面所提到的网页表格特点的,它的基本思路是这样的:首先将一个10行7列的数组进行清零,然后就对网页表格进行扫描,将当前行从第1列直到最后一列逐列扫描,扫描过的列就将值置1,如果列有rowspan属性的,就将相应的值置1,周几即为当前列号。

    最后,我们看看实现的提取课表的效果图:

    3 结束语

    上述算法能适用绝大部分学校课表的情况,能够满足基本要求;但也存在一些不足之处,比如:课表的单双周问题,课表如果同时有1节、2节甚至多节的情况等等,需要进一步进行完善。

    参考文献:

    [1] 陈哲. 垂直搜索中网页抓取技术的研究[J]. 科技信息, 2009(22).

    [2] 陈忠菊. 正则表达式的研究和在网页抓取中的应用[J]. 电脑编程技巧与维护, 2014(23).

    [3] 刘艳平. Python模拟登录网站并抓取网页的方法[J]. 微型电脑应用, 2015(2).

相关文章!
  • 融合正向建模与反求计算的车用

    崔庆佳 周兵 吴晓建 李宁 曾凡沂<br />
    摘 要:针对减振器调试过程中工程师凭借经验调试耗时耗力等局限性,引入反求的思想,开展了

  • 浅谈高校多媒体教育技术的应用

    聂森摘要:在科学技术蓬勃发展的今天,我国教育领域改革之中也逐渐引用了先进技术,如多媒体技术、网络技术等,对于提高教育教学水平有很

  • 卫星天线过顶盲区时机分析

    晁宁+罗晓英+杨新龙<br />
    摘 要: 分析直角坐标框架结构平台和极坐标框架平台结构星载天线在各自盲区状态区域附近的发散问题。通过建