廖環(huán)宇 何貞銘
摘 要:為滿足信息查詢需求及促進(jìn)移動(dòng)校園發(fā)展,使用模擬登陸、Python爬蟲、驗(yàn)證碼識(shí)別等技術(shù)設(shè)計(jì)基于iOS的移動(dòng)校園助手。該應(yīng)用可實(shí)現(xiàn)新聞資訊實(shí)時(shí)瀏覽、教務(wù)管理無(wú)縫接入、校園地圖搜索導(dǎo)航及校園招聘信息查看等功能,為高校師生提供一個(gè)解決學(xué)習(xí)生活難題的新渠道,提高學(xué)校信息傳遞時(shí)效性和工作效率,同時(shí)可為其它高校實(shí)現(xiàn)校園數(shù)字化和移動(dòng)化提供參考。
關(guān)鍵詞:校園助手;iOS應(yīng)用;移動(dòng)校園;Python爬蟲;模擬登陸;驗(yàn)證碼識(shí)別
DOI:10. 11907/rjdk. 182547
中圖分類號(hào):TP319文獻(xiàn)標(biāo)識(shí)碼:A文章編號(hào):1672-7800(2019)003-0129-04
0 引言
目前大多數(shù)高校均建設(shè)有獨(dú)特的校園網(wǎng)站系統(tǒng)和信息管理系統(tǒng),如圖書管理系統(tǒng)、校園新聞網(wǎng)、科研管理信息系統(tǒng)、校園一卡通自助服務(wù)系統(tǒng)、學(xué)生就業(yè)信息平臺(tái)、校園電子郵件系統(tǒng)等,多數(shù)高校信息化建設(shè)已具備一定規(guī)模[1-2]。但隨著移動(dòng)網(wǎng)絡(luò)的發(fā)展,傳統(tǒng)校園信息平臺(tái)存在的弊端逐漸顯現(xiàn)[3]。
(1)空間問(wèn)題。傳統(tǒng)校園信息的獲取一般存在于PC端,但PC端一般固定于某場(chǎng)所,因此對(duì)空間有一定限制。
(2)信息交流問(wèn)題。傳統(tǒng)校園信息獲取途徑單一、空間固定,導(dǎo)致信息傳達(dá)不及時(shí),信息實(shí)用率低,甚至產(chǎn)生信息孤島。
隨著互聯(lián)網(wǎng)技術(shù)的飛速發(fā)展,數(shù)字化校園越來(lái)越受到各高校的重視[4-6]。復(fù)旦大學(xué)于2011年8月率先發(fā)布“i復(fù)旦”校園移動(dòng)信息應(yīng)用,集成了新聞、日歷、班車、圖書館、校園卡、黃頁(yè)等應(yīng)用模塊[7]。其它各大高校也陸續(xù)推出了自己的校園移動(dòng)客戶端,如武漢理工大學(xué)的“掌上理工大”、清華大學(xué)的“AtTsinghua”、蘇州大學(xué)的“你好蘇大”等。在國(guó)外,校園應(yīng)用也發(fā)展良好,如加州大學(xué)圣迭戈分校的移動(dòng)平臺(tái)提供課程安排、校車查詢及天氣查詢功能[8]。阿拉巴馬大學(xué)移動(dòng)校園應(yīng)用中的運(yùn)動(dòng)門戶模塊不僅提供不同運(yùn)動(dòng)場(chǎng)賽事安排情況,還可即時(shí)更新比賽資訊[9]??傮w而言,國(guó)外移動(dòng)校園服務(wù)平臺(tái)在功能設(shè)計(jì)上重服務(wù)、輕管理,更貼近師生生活,但是在界面設(shè)計(jì)、功能設(shè)計(jì)等方面仍不夠完善。
目前各高校校園信息服務(wù)系統(tǒng)大多基于B/S模式或Android系統(tǒng)開發(fā)而成[10-12],隨著iPhone手機(jī)用戶數(shù)量的不斷增加,開發(fā)一款基于iOS系統(tǒng)的校園助手顯得十分必要。iOS系統(tǒng)具有系統(tǒng)穩(wěn)定、操作流暢、界面美觀、安全性高等特點(diǎn)[13-14],可為用戶帶來(lái)良好的使用體驗(yàn)。基于上述問(wèn)題和學(xué)校教學(xué)情況,本文設(shè)計(jì)開發(fā)了基于iOS平臺(tái)的高校校園助手,在傳統(tǒng)校園APP新聞瀏覽、成績(jī)查詢等基礎(chǔ)功能上,增加校園地圖和招聘信息功能,可緩解高校學(xué)生信息資料獲取途徑較少的問(wèn)題,同時(shí)提高信息傳遞時(shí)效性和工作效率,促進(jìn)校園移動(dòng)互聯(lián)建設(shè)發(fā)展。
1 關(guān)鍵技術(shù)
1.1 模擬登錄
模擬登錄是利用程序模擬用戶登錄、訪問(wèn)服務(wù)器的過(guò)程[15]。有些網(wǎng)站內(nèi)容需登錄后才可正常查看,如高校學(xué)生選課或考試成績(jī)查詢,需先輸入教務(wù)處賬號(hào)和密碼。為實(shí)現(xiàn)模擬登陸,首先需使用瀏覽器開發(fā)者工具對(duì)目標(biāo)網(wǎng)站進(jìn)行數(shù)據(jù)抓包,分析登錄網(wǎng)站的執(zhí)行過(guò)程,包括請(qǐng)求的URL地址及每一步發(fā)送或返回的參數(shù)情況;然后在服務(wù)端編寫代碼模擬整個(gè)登錄過(guò)程中全部操作。
模擬登錄步驟一般分為:①訪問(wèn)登錄頁(yè)面;②解析返回的Header信息(如Cookie、Session id、Request URL等);③獲取用戶輸入的賬號(hào)和密碼;④通過(guò)POST請(qǐng)求將賬號(hào)、密碼、Header等信息發(fā)送至Request URL;⑤解析返回的結(jié)果,判斷是否登錄成功。
1.2 Python爬蟲
網(wǎng)絡(luò)爬蟲又名“網(wǎng)絡(luò)蜘蛛”,其工作原理是首先設(shè)定一些初始的URL地址,通過(guò)模擬瀏覽器訪問(wèn)網(wǎng)站過(guò)程中的動(dòng)作,獲取目標(biāo)網(wǎng)站返回的數(shù)據(jù)信息,并利用解析工具進(jìn)行解析獲得最終符合要求的數(shù)據(jù)。其主要包含配置模塊、URL管理模塊、網(wǎng)頁(yè)抓取模塊、網(wǎng)頁(yè)解析模塊及網(wǎng)頁(yè)存儲(chǔ)模塊等[16]。
Python是一門功能強(qiáng)大的動(dòng)態(tài)編程語(yǔ)言,由于其語(yǔ)法簡(jiǎn)潔、功能庫(kù)豐富、高擴(kuò)展性及代碼開源等特點(diǎn)而受到廣大開發(fā)者的青睞。目前大多數(shù)網(wǎng)絡(luò)爬蟲都是基于Python語(yǔ)言開發(fā)而成[17-18]。本文使用基于2.7版本的Python作為網(wǎng)絡(luò)爬蟲開發(fā)語(yǔ)言,從學(xué)校各個(gè)新聞網(wǎng)上抓取數(shù)據(jù),為APP提供新聞、招聘信息數(shù)據(jù)來(lái)源。
1.3 驗(yàn)證碼識(shí)別
驗(yàn)證碼是為防止黑客惡意攻擊網(wǎng)站及進(jìn)行人機(jī)區(qū)分而設(shè)計(jì)的一種驗(yàn)證登錄用戶身份的技術(shù),目前主要有文字、圖片、語(yǔ)音和3D驗(yàn)證碼4種類型[19-20]。其中,網(wǎng)站應(yīng)用最廣泛的為圖片驗(yàn)證碼,通過(guò)將一些字符進(jìn)行扭曲、拉伸、錯(cuò)亂排版,并添加額外噪點(diǎn)或線條,增加圖片驗(yàn)證復(fù)雜度,從而在一定程度上防止機(jī)器人登錄網(wǎng)站。
驗(yàn)證碼識(shí)別主要通過(guò)圖像處理和模式識(shí)別技術(shù)實(shí)現(xiàn)對(duì)圖片驗(yàn)證碼的處理。其中,圖像處理技術(shù)包括圖像灰度化、二值化、去噪、傾斜度校正、字符切割和歸一化等;模式識(shí)別技術(shù)主要包括提取字符特征、樣本訓(xùn)練及識(shí)別。
由于本應(yīng)用在模擬登陸教務(wù)處過(guò)程中會(huì)出現(xiàn)圖片驗(yàn)證碼,為提供更好的用戶體驗(yàn),后臺(tái)實(shí)現(xiàn)了自動(dòng)識(shí)別圖片驗(yàn)證碼的功能,減少用戶輸入次數(shù)。
2 系統(tǒng)總體設(shè)計(jì)
2.1 需求分析
校園助手功能主要包括:新聞資訊、教務(wù)助手、校園地圖、招聘信息和個(gè)人中心5大模塊。
(1)新聞資訊。APP主要功能之一,提供最新校園資訊和通知公告等信息。用戶可瀏覽、收藏、評(píng)論和分享新聞。
(2)教務(wù)助手。教務(wù)系統(tǒng)是高校學(xué)生使用頻次最高的校園信息系統(tǒng)之一,在高校教務(wù)信息管理方面發(fā)揮著重要作用。該模塊主要包括成績(jī)查詢和課表查詢。
(3)校園地圖。因?qū)W校占地面積較大,師生人數(shù)眾多,且各個(gè)校區(qū)分布于不同地區(qū)。由于不熟悉校園環(huán)境,師生迷路的情況時(shí)有發(fā)生。針對(duì)該問(wèn)題,校園助手提供各校區(qū)電子地圖,方便師生快速定位和導(dǎo)航。模塊主要包含用戶定位、POI關(guān)鍵字搜索、地圖導(dǎo)航、全景校園等功能。
(4)招聘信息。每年臨近畢業(yè)時(shí)期,各大高校就業(yè)指導(dǎo)中心和就業(yè)信息網(wǎng)均會(huì)發(fā)布相關(guān)專業(yè)招聘和宣講會(huì)信息。傳統(tǒng)宣傳方法通過(guò)在校內(nèi)粘貼海報(bào)或在各個(gè)班群發(fā)送相關(guān)信息,不僅費(fèi)時(shí)費(fèi)力,而且宣傳效果不佳。招聘信息模塊能夠在一定程度上解決該問(wèn)題。后臺(tái)系統(tǒng)通過(guò)網(wǎng)絡(luò)爬蟲技術(shù),對(duì)學(xué)校就業(yè)信息網(wǎng)及海投網(wǎng)招聘信息進(jìn)行抓取,并返回給前臺(tái)進(jìn)行展示,為用戶提供全國(guó)各省、各大高校實(shí)時(shí)招聘信息。
(5)個(gè)人中心。該模塊主要包含用戶個(gè)人信息設(shè)置、我的收藏、意見反饋、字體大小和消除緩存等功能。
2.2 系統(tǒng)架構(gòu)
基于iOS的移動(dòng)校園助手分為服務(wù)端和客戶端。服務(wù)端基于模擬登錄和驗(yàn)證碼識(shí)別技術(shù),可實(shí)現(xiàn)與教務(wù)系統(tǒng)實(shí)時(shí)對(duì)接;通過(guò)設(shè)定Python爬蟲定時(shí)運(yùn)行的間隔時(shí)間,使其自動(dòng)從學(xué)校網(wǎng)站上抓取新聞通知,并保存在MySQL數(shù)據(jù)庫(kù)中,為客戶端提供數(shù)據(jù)來(lái)源。
客戶端采用AFNetworking和Realm等第三方庫(kù)進(jìn)行網(wǎng)絡(luò)請(qǐng)求、數(shù)據(jù)庫(kù)讀寫操作。應(yīng)用接收用戶操作事件后,由視圖控制器調(diào)用相應(yīng)功能服務(wù),并向服務(wù)器接口請(qǐng)求數(shù)據(jù),成功返回后填充到視圖層,并保存至SQLite數(shù)據(jù)庫(kù)中。系統(tǒng)整體架構(gòu)如圖1所示。
2.3 數(shù)據(jù)庫(kù)設(shè)計(jì)
數(shù)據(jù)是組成一個(gè)系統(tǒng)的關(guān)鍵部分,數(shù)據(jù)庫(kù)設(shè)計(jì)的質(zhì)量對(duì)整個(gè)應(yīng)用性能和用戶體驗(yàn)產(chǎn)生重要影響。下文分別描述系統(tǒng)3個(gè)主要數(shù)據(jù)表結(jié)構(gòu)。
(1)用戶信息表。主要包含用戶ID、用戶名、密碼、真實(shí)姓名、頭像、學(xué)號(hào)、生日、性別、院系、專業(yè)、班級(jí)等信息。
(2)課程表。與課程相關(guān)的數(shù)據(jù)包括課程ID、課程名、學(xué)年、學(xué)期、周次、星期、節(jié)次、學(xué)時(shí)、學(xué)分、教師、教室等。
(3)新聞信息表。與新聞相關(guān)的數(shù)據(jù)包括新聞ID、標(biāo)題、內(nèi)容、關(guān)鍵詞、時(shí)間、作者、源網(wǎng)站名稱和URL等。
3 主要功能模塊實(shí)現(xiàn)
APP使用Objective-C語(yǔ)言在Mac OS 10.11系統(tǒng)下進(jìn)行相關(guān)功能開發(fā)。軟件支持在iOS 7.0及以上設(shè)備運(yùn)行。
3.1 新聞資訊模塊實(shí)現(xiàn)
該模塊主要提供學(xué)校新聞網(wǎng)中的新聞資訊,點(diǎn)擊新聞條目可跳轉(zhuǎn)至對(duì)應(yīng)信息詳情界面,并可對(duì)新聞進(jìn)行收藏、分享和評(píng)論。模塊工作原理為:設(shè)置定時(shí)任務(wù)運(yùn)行Python爬蟲,增量抓取校園網(wǎng)新聞數(shù)據(jù),并保存至服務(wù)器數(shù)據(jù)庫(kù),通過(guò)調(diào)用后臺(tái)數(shù)據(jù)接口,向服務(wù)器請(qǐng)求新聞信息并返回至APP,最終將新聞?wù)故驹诮缑嫔稀?/p>
頂部輪播圖片新聞區(qū)域及底部各個(gè)欄目的新聞條目可分別看作橫向及縱向UITableView列表。其中,不同新聞列表圖片數(shù)量可能不同,需自定義不同的UITableViewCell進(jìn)行展示。為避免主界面線程阻塞,應(yīng)使用異步方法加載圖片數(shù)據(jù)。新聞資訊模塊運(yùn)行如圖2所示。
3.2 教務(wù)助手模塊實(shí)現(xiàn)
教務(wù)助手模塊主要包含成績(jī)查詢及課表查詢。進(jìn)入成績(jī)查詢頁(yè)面前,需先判斷用戶是否為學(xué)號(hào)登錄,否則跳轉(zhuǎn)至登錄界面。將學(xué)號(hào)及密碼發(fā)送至服務(wù)器,由后臺(tái)系統(tǒng)對(duì)教務(wù)系統(tǒng)進(jìn)行模擬登錄,成功后繼續(xù)請(qǐng)求用戶成績(jī),使用UITableView控件將分?jǐn)?shù)及績(jī)點(diǎn)信息顯示在界面上,如圖3所示。
課表查詢的數(shù)據(jù)獲取方法與成績(jī)查詢類似。通過(guò)讀取NSUserDefaults,獲取用戶專業(yè)班級(jí),同時(shí)將用戶需查詢的學(xué)年、學(xué)期等信息發(fā)送至服務(wù)器。解析網(wǎng)頁(yè)信息后返回課程JSON數(shù)據(jù),通過(guò)嵌套使用UITableView控件進(jìn)行展示,并保存至SQLite數(shù)據(jù)庫(kù)中。之后每次查詢可直接使用Realm讀取SQLite數(shù)據(jù)庫(kù),無(wú)需向服務(wù)器重復(fù)發(fā)送網(wǎng)絡(luò)請(qǐng)求,一定程度上減輕了服務(wù)器壓力,節(jié)省了用戶流量。
3.3 校園地圖模塊實(shí)現(xiàn)
互聯(lián)網(wǎng)技術(shù)的成熟促進(jìn)了地圖開發(fā)產(chǎn)業(yè)的蓬勃發(fā)展,市場(chǎng)涌現(xiàn)出大量各有所長(zhǎng)的地圖API[21]。由于高德地圖具有接口豐富、定位精準(zhǔn)、使用簡(jiǎn)易、文檔齊全等特點(diǎn),故本文選用其進(jìn)行二次開發(fā)。
用戶進(jìn)入該模塊后,點(diǎn)擊“定位”圖標(biāo)按鈕可快速定位到用戶當(dāng)前所在位置,點(diǎn)擊“校區(qū)切換”圖標(biāo)可切換顯示不同校區(qū)的地圖,通過(guò)設(shè)置iOS地圖SDK中AMapPOIKeywordsSearchRequest類的keyword參數(shù),發(fā)起POI關(guān)鍵字搜索,查詢用戶感興趣的地點(diǎn)信息。另外,導(dǎo)航SDK中還提供步行、騎行、公交、駕車等多種出行路線規(guī)劃接口,對(duì)不同路線規(guī)劃類中的出發(fā)地和目的地等參數(shù)進(jìn)行設(shè)置后,在回調(diào)函數(shù)中將路線顯示在地圖上,為用戶提供便捷的導(dǎo)航服務(wù)。
3.4 招聘信息模塊實(shí)現(xiàn)
用戶進(jìn)入該模塊后,默認(rèn)顯示學(xué)校招聘及宣講會(huì)信息。APP將請(qǐng)求參數(shù)發(fā)送給后臺(tái)服務(wù)器,服務(wù)器通過(guò)模擬瀏覽器訪問(wèn)的方式獲取學(xué)校就業(yè)信息網(wǎng)、海投網(wǎng)上對(duì)應(yīng)省份和學(xué)校招聘宣講信息并返回至APP。用戶點(diǎn)擊“省份”和“學(xué)?!卑粹o后,底部彈出UIActionSheet視圖,以便切換選擇其它地區(qū)高校的招聘信息。
4 結(jié)語(yǔ)
隨著校園信息化建設(shè)的推進(jìn),移動(dòng)校園APP逐漸在各大高校得到廣泛推廣和應(yīng)用。本系統(tǒng)通過(guò)整合學(xué)校新聞網(wǎng)、就業(yè)信息網(wǎng)和海投網(wǎng)等網(wǎng)站信息,基于高德地圖SDK及模擬登錄、圖片識(shí)別、Python爬蟲技術(shù),實(shí)現(xiàn)了新聞資訊、教務(wù)助手、校園地圖、招聘信息等功能,為師生打造了一個(gè)移動(dòng)校園iOS應(yīng)用平臺(tái)。
目前該應(yīng)用已成功在蘋果應(yīng)用商店上線,并在校內(nèi)進(jìn)行了一段時(shí)間的試運(yùn)行。系統(tǒng)界面友好、操作簡(jiǎn)便、性能穩(wěn)定,取得了良好效果,不僅為師生提供了獲取校園資訊的新途徑,同時(shí)促進(jìn)了學(xué)校教學(xué)、科研及綜合教務(wù)服務(wù)水平的提升。隨著應(yīng)用功能不斷豐富及系統(tǒng)性能逐步提升,該系統(tǒng)將為學(xué)校師生提供更加便捷的校園生活服務(wù)。
參考文獻(xiàn):
[1] 趙小剛. 淺談高校信息化建設(shè)現(xiàn)狀與發(fā)展趨勢(shì)[J]. 江蘇科技信息,2013(20):28-30.
[2] 王力斌,張偉,頓文濤. 高校信息化建設(shè)演進(jìn)分析[J].? 河南工業(yè)大學(xué)學(xué)報(bào):社會(huì)科學(xué)版,2016(02)
[3] 王鳳仙. 上海大學(xué)生智能手機(jī)的使用行為研宄[D]. 上海:上海交通大學(xué),2013.
[4] 傅宇凡,冀婧巖,高凱濤,等. 117所高校綜合管理信息化對(duì)比分析[J]. 中國(guó)教育網(wǎng)絡(luò),2017(Z1):23-28.
[5] 崔為花. 基于移動(dòng)互聯(lián)網(wǎng)技術(shù)的“移動(dòng)智慧校園”設(shè)計(jì)與實(shí)現(xiàn)[J]. 軟件工程師,2015,18(5):27-29.
[6] 尚進(jìn). 淺談西安電子科技大學(xué)移動(dòng)校園建設(shè)[J]. 陜西教育:高教版,2014(Z1):115-116.
[7] 任婷婷. 基于Android系統(tǒng)的校園助手應(yīng)用的設(shè)計(jì)與實(shí)現(xiàn)[D]. 北京:北京交通大學(xué),2014.
[8] ALDRICH A. Universities and libraries move to the mobile Web[EB/OL]. http://www.educause.edu/ero/article/universities-and-libraries- move- mobile-web.
[9] GUIRGUIS S, HASSAN M A. A smart framework for web content and resources adaptation in mobile devices[C]. IEEE Advanced Communication Technology (ICACT),2010:1-8.
[10] 曹雙雙. 基于Android手機(jī)的校園移動(dòng)平臺(tái)設(shè)計(jì)[J]. 軟件導(dǎo)刊,2015,14(8):179-181.
[11] 王欣,景波. 基于云技術(shù)支持的智慧校園支撐平臺(tái)的總體設(shè)計(jì)[J]. 現(xiàn)代電子技術(shù),2016,39(6):18-20.
[12] 江龍. 基于Android系統(tǒng)的校園助手軟件的設(shè)計(jì)與實(shí)現(xiàn)[D]. 淄博:山東理工大學(xué),2016.
[13] 鄒光臨. Android與iOS對(duì)比分析及競(jìng)爭(zhēng)優(yōu)缺點(diǎn)[J]. 科技與創(chuàng)新,2017(10):65.
[14] 吳寅鶴. iOS平臺(tái)應(yīng)用程序的安全性研究[D]. 廣州:廣東工業(yè)大學(xué),2014.
[15] 孫青云,王俊峰,趙宗渠,等. 一種基于模擬登錄的微博數(shù)據(jù)采集方案[J]. 計(jì)算機(jī)技術(shù)與發(fā)展,2014,24(3):6-10.
[16] 王敏. 分布式網(wǎng)絡(luò)爬蟲的研究與實(shí)現(xiàn)[D]. 南京:東南大學(xué),2017.
[17] 馮清. 基于Python的基因表達(dá)數(shù)據(jù)網(wǎng)絡(luò)爬蟲研究與設(shè)計(jì)[D]. 太原:山西醫(yī)科大學(xué),2017.
[18] 陳琳,任芳. 基于Python的新浪微博數(shù)據(jù)爬蟲程序設(shè)計(jì)[J]. 信息系統(tǒng)工程,2016(9):97-99.
[19] 呂霽. 淺談驗(yàn)證碼的識(shí)別[J]. 河北能源職業(yè)技術(shù)學(xué)院學(xué)報(bào),2015,15(1):72-74.
[20] 朱瑩玲. 粘連字符驗(yàn)證碼的識(shí)別研究[D]. 南京:南京理工大學(xué),2017.
[21] 向玉云,高爽,陳云紅,等. 百度、高德及Google地圖API比較研究[J]. 軟件導(dǎo)刊,2017,16(9):19-21,25.
(責(zé)任編輯:江 艷)