廖環宇 何貞銘


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