国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

Android解析網(wǎng)頁課表的算法設計與實現(xiàn)

2016-06-14 01:01:04申圣兵姚方元
電腦知識與技術(shù) 2016年12期

申圣兵+姚方元

摘要:該文通過對常見校園APP中提取網(wǎng)頁課表的技術(shù)進行了分析,介紹了其核心的算法及具體實現(xiàn),最后提出了進一步完善的方法。

關鍵詞:校園APP;網(wǎng)頁課表;網(wǎng)頁解析

中圖分類號:TP311 文獻標識碼:A文章編號:1009-3044(2016)12-0215-02

由于智能手機的迅速普及,校園類APP異?;鸨?,課程格子、超級課程表等等校園應用APP受到了廣大學生們的喜愛,這些校園類應用APP以學生們經(jīng)常使用的課表作為切入點,是它們成功的一項重要的因素,那么它們是如何將課表移植到手機上的呢?

高校的教務系統(tǒng),主要是正方、青果、強智等幾種。如正方官網(wǎng)介紹成功案例有1000多家高校,它們的課表基本以網(wǎng)頁形式展示,所以,提取網(wǎng)頁課表成為這類校園應用APP比較核心的算法。

1 算法分析

我們以正方教務系統(tǒng)提供的課表為例來分析算法設計,下面是正方系統(tǒng)提供的課表圖。

1.1課表分析

課表以一個18行9列的表格顯示,第一行顯示星期,第二行顯示早晨,第三行開始到倒數(shù)第二行之間為課程顯示信息,中間又有兩行分別用來分隔上午和下午、下午和晚上,最后一行顯示課表的備注信息。

課表第1列顯示早晨、上、下午和晚上,第2列顯示節(jié)次,第3列到最后顯示相關課程信息。

1.2算法設計思路

課表的信息是顯示在一個以表格的第3行第3列為左上角,倒數(shù)第二行最后一列為右下角這樣的一個矩形區(qū)域的,由于我校一天最多只有10節(jié)課,一周7天,所以我們以一個10行7列的二維數(shù)組對課程表信息進行掃描,以便提取課程開始節(jié)次、結(jié)束節(jié)次及星期等關鍵信息,如果其他學校安排的一天課程節(jié)次數(shù)不同,就將數(shù)組稍作調(diào)整。由于網(wǎng)頁表格顯示具有不同于常規(guī)表格的特點,這給我們設計算法帶來了難處。比如一行中某一列如果有課程信息:計算機應用基礎【必修】

2節(jié)/周[1-2]節(jié)(01-06,08-18)

【給排水高1501】

【教二棟208】,由于我們的課程安排一般是一次2節(jié)或以上,所以標記會有rowspan屬性,它的值就是安排的連續(xù)節(jié)次,這樣它占用了下面行的列數(shù),下面相應行的列數(shù)即標記數(shù)就會減少。如果正常的列數(shù)為7列,那么到下面的行數(shù)就可能出現(xiàn)4列或5列甚至更少的情況,這是網(wǎng)頁表格常見的特征。

2 算法實現(xiàn)

2.1課表實體類的實現(xiàn)

我們設計一個實體類Course來存儲課程信息,它的設計如下:

2.2課表解析關鍵算法的實現(xiàn)

課表解析我們是通過jsoup來完成的,jsoup 是一款Java 的HTML解析器,可直接解析某個URL地址、HTML文本內(nèi)容。它提供了一套非常省力的API,可通過DOM,CSS以及類似于jQuery的操作方法來取出和操作數(shù)據(jù)。

首先我們移除一些無用的數(shù)據(jù):我們需要移除第1、2、7、12、15、16、17、18行及相應行第1列數(shù)據(jù),如下圖所示:

然后,我們通過循環(huán)遍歷行、列來得到課程信息,并將它存儲到Course類的一個集合里面。如下圖所示:

這其中,用到了一個獲取當前課程信息為周幾的一個函數(shù)fillMap(column, map, i),它的作用就是用來解決上面所提到的網(wǎng)頁表格特點的,它的基本思路是這樣的:首先將一個10行7列的數(shù)組進行清零,然后就對網(wǎng)頁表格進行掃描,將當前行從第1列直到最后一列逐列掃描,掃描過的列就將值置1,如果列有rowspan屬性的,就將相應的值置1,周幾即為當前列號。

最后,我們看看實現(xiàn)的提取課表的效果圖:

3 結(jié)束語

上述算法能適用絕大部分學校課表的情況,能夠滿足基本要求;但也存在一些不足之處,比如:課表的單雙周問題,課表如果同時有1節(jié)、2節(jié)甚至多節(jié)的情況等等,需要進一步進行完善。

參考文獻:

[1] 陳哲. 垂直搜索中網(wǎng)頁抓取技術(shù)的研究[J]. 科技信息, 2009(22).

[2] 陳忠菊. 正則表達式的研究和在網(wǎng)頁抓取中的應用[J]. 電腦編程技巧與維護, 2014(23).

[3] 劉艷平. Python模擬登錄網(wǎng)站并抓取網(wǎng)頁的方法[J]. 微型電腦應用, 2015(2).

田阳县| 明水县| 儋州市| 五指山市| 营山县| 确山县| 黄骅市| 江永县| 高雄市| 金乡县| 达拉特旗| 洛南县| 浦城县| 剑河县| 庆阳市| 阳高县| 天长市| 许昌县| 莱芜市| 肥东县| 揭西县| 马山县| 绥宁县| 垦利县| 临沂市| 曲阳县| 长宁县| 寿光市| 白山市| 承德市| 枝江市| 昌图县| 舟曲县| 龙口市| 玉树县| 阿尔山市| 横峰县| 青铜峡市| 乌兰察布市| 原阳县| 马山县|