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

?

基于網(wǎng)絡(luò)爬蟲技術(shù)的教學(xué)管理系統(tǒng)教師客戶端的實現(xiàn)方法研究

2022-03-07 04:35:04陳禮念王瑞超
現(xiàn)代計算機 2022年24期
關(guān)鍵詞:課程表爬蟲監(jiān)考

魯 斌,陳禮念,王瑞超

(五邑大學(xué)智能制造學(xué)部,江門 529020)

0 引言

隨著現(xiàn)代信息技術(shù)的發(fā)展,校園信息化經(jīng)過多年的建設(shè),為學(xué)校提高行政管理效率和教學(xué)質(zhì)量、促進科研和教研教改等方面都作出了巨大的貢獻。目前幾乎所有的學(xué)校都擁有了成熟完備的信息化系統(tǒng),高等院校尤其如此。高校的信息化建設(shè)更加完善,基本上都建成了自己的校園局域網(wǎng),并接入了互聯(lián)網(wǎng)。由于主管部門的關(guān)懷和高校自身的重視,很多高校是把信息化當(dāng)做基礎(chǔ)設(shè)施建設(shè)的內(nèi)容之一。近年來在大數(shù)據(jù)和云計算等新技術(shù)的加持下,高校里的各種軟硬件系統(tǒng)比比皆是[1-3]。然而,這種遍地開花的信息系統(tǒng)在給師生提供自動化操作便利的同時也帶來了一些麻煩。比如,現(xiàn)在高校里大多數(shù)信息系統(tǒng)都是B/S架構(gòu)的,這種架構(gòu)意味著系統(tǒng)的大部分功能都在服務(wù)器端實現(xiàn),通用性強,但是一些個性化操作卻難以實現(xiàn)。相比B/S 架構(gòu),C/S 架構(gòu)的界面和操作可以豐富很多,能滿足用戶的個性化功能要求。由于高校的各種管理系統(tǒng)都是用了多年的成熟系統(tǒng),一般不會輕易更改或升級,即使改動其代價也非常高。然而,有些系統(tǒng)經(jīng)過長時間的使用,由于使用者的習(xí)慣或其他某些原因,可能會產(chǎn)生一些新的個性化使用需求。那么,在不改變現(xiàn)有信息化系統(tǒng)軟硬件配置的情況下,根據(jù)B/S和C/S 兩種架構(gòu)的特點,人們可以為新的個性化需求而定制一些專用的功能操作。

本文正是基于這種思想而為學(xué)校中最常使用的教學(xué)管理系統(tǒng)增加了一個教師或教學(xué)管理人員使用的PC 客戶端,實現(xiàn)一些個性化需求。為了實現(xiàn)這一目標(biāo),本文利用網(wǎng)頁爬蟲技術(shù)從教學(xué)管理系統(tǒng)服務(wù)器端爬取一些必要的數(shù)據(jù),用于定制PC客戶端程序。

1 個性化需求

教學(xué)管理系統(tǒng)大部分都是B/S模式的,五邑大學(xué)的教學(xué)管理系統(tǒng)也不例外,能滿足絕大部分通用需求。五邑大學(xué)教學(xué)管理系統(tǒng)功能比較全面,能做到統(tǒng)一用戶界面,并操作簡單。教學(xué)管理系統(tǒng)的使用者基本上是學(xué)校的師生,細分之下,包括系統(tǒng)管理員、在冊的學(xué)生、教學(xué)的教師,還有一些參與教學(xué)活動的行政管理人員等用戶。不同角色的用戶,其使用權(quán)限也各自不同,使用的頻率也都不一樣。相比之下,學(xué)生應(yīng)該使用的最少,主要就是在開學(xué)時看一下課程表,期末時看一下考試時間和考試分數(shù)。得益于移動互聯(lián)網(wǎng)的興盛和手機的普及,不少學(xué)生會使用類似“超級課程表”之類的APP 或微信小程序,直接訪問教學(xué)管理系統(tǒng)的頻次就更加低了。在系統(tǒng)運行穩(wěn)定之后,系統(tǒng)管理員的工作也越來越少。而老師和教務(wù)員等教學(xué)相關(guān)的工作人員就成為了訪問教學(xué)管理系統(tǒng)的主力軍。出于工作需要,他們使用教學(xué)管理系統(tǒng)更加頻繁。因此,對教學(xué)管理系統(tǒng)的系統(tǒng)管理端和學(xué)生端的研究并無必要,但是需要對教學(xué)管理系統(tǒng)教師端的功能進行一些梳理。對于參與教學(xué)活動的專任教師和教學(xué)管理人員來說,教學(xué)管理系統(tǒng)主要分為三大功能模塊:學(xué)籍管理、教務(wù)管理和個人事務(wù)。五邑大學(xué)的教學(xué)管理系統(tǒng)在教學(xué)相關(guān)的工作人員所能看到的功能框架如圖1所示。

圖1 教學(xué)管理端的框架圖

從圖1可以看出,五邑大學(xué)的教學(xué)管理系統(tǒng)的教師端功能還是比較全面的,但是整個系統(tǒng)的功能遠遠不止這些,并非全貌。其中,教務(wù)管理模塊包括排課管理、選課管理、考務(wù)管理和成績管理等功能子模塊;學(xué)籍管理對于教學(xué)教務(wù)人員來說,主要用于對學(xué)生的基本學(xué)籍信息的查詢,這個功能無需多言;個人事務(wù)模塊主要是針對專任教師的,又分為教學(xué)工作、成績管理、信息查詢和實踐管理等多個功能子模塊。

在眾多的子模塊里,排課管理子模塊的使用者一般是教輔人員,根據(jù)排課規(guī)則在上學(xué)期期末對下學(xué)期的課程進行開課安排,最終形成各門功課或各個老師具體的課程表;該模塊還提供一個課堂速報的查詢,給學(xué)生一個快速報修某課程的機會。選課管理子模塊方便學(xué)生根據(jù)自己的專業(yè)或興趣來選擇修哪些課程,并由教學(xué)管理人員進行最后的審批;而教師可以在此查詢到相關(guān)學(xué)生修課的詳細情況??紕?wù)管理子模塊用于當(dāng)前學(xué)期各門功課的期末考試安排等,這個模塊主要是確定課程考試的時間、地點和監(jiān)考老師。而考試類型有教務(wù)處統(tǒng)考、學(xué)院考和隨堂考三種,這是學(xué)期初由任課老師根據(jù)課程的性質(zhì)和教學(xué)大綱而選擇的。如果某門功課的考試類型是教務(wù)處統(tǒng)考,那么就有教務(wù)處的工作人員統(tǒng)一安排時間和地點,再由該門功課的開課院系的教務(wù)員安排監(jiān)考老師。如果考試類型是學(xué)院考,那么就有開課院系的教務(wù)員直接確定考試時間、地點和監(jiān)考老師。對于隨堂考,一般就安排在該門功課的最后一次課考,或者上完課了由任課老師和學(xué)生商量時間和地點;如果學(xué)生人數(shù)較多,可以要求教務(wù)員安排監(jiān)考老師。教務(wù)管理中的成績管理子模塊則主要用于學(xué)生成績的查詢,教師或教學(xué)管理人員可以從課程成績總庫里以學(xué)期學(xué)年、修讀方式、學(xué)生院系、課程大類、年級、課程分類、專業(yè)名稱、考試性質(zhì)、成績方式、課程名稱、學(xué)生姓名或?qū)W號等關(guān)鍵詞進行查詢,也可以統(tǒng)計分析報表。教學(xué)工作子模塊提供的功能較多,與教學(xué)相關(guān)的一些功能,任課老師都能使用。成績管理子模塊提供了成績錄入的入口。信息查詢子模塊提供了個人信息的維護和培養(yǎng)方案的查詢并下載的功能。實踐管理子模塊主要用于對大四學(xué)生的畢業(yè)設(shè)計或論文題目的一些管理。

因為教學(xué)管理系統(tǒng)是通過瀏覽器打開的,瀏覽器端查詢?yōu)g覽的功能非常強大,但是某些業(yè)務(wù)處理能力相對較弱。比如打印的處理,瀏覽器自帶的打印功能一般只能打印當(dāng)前頁面的內(nèi)容,這顯然不能滿足各種信息系統(tǒng)的要求。而為了滿足打印的需求,B/S 模式的系統(tǒng)一般會把數(shù)據(jù)導(dǎo)入到Excel 或Word 文檔里再下載到客戶端本地,然后利用Office的打印控件實現(xiàn)打印的功能。這樣的打印流程稍顯繁瑣。

以前每個學(xué)期教師的課程一旦安排,那么課表基本上就固定了,每周上課的時間和地點不會發(fā)生太大的變化。而現(xiàn)在情況發(fā)生了變化,新的排課體系排出來的上課安排每周都可能不一樣,因此教師訪問教學(xué)管理系統(tǒng)中課表那一欄的頻率大大增加,嚴重的時候可能每周都會登錄教學(xué)管理系統(tǒng)去查看自己的課表。如果每次僅僅是為了查看課表而登錄教學(xué)管理系統(tǒng),也是有點繁瑣。

教學(xué)管理系統(tǒng)還有安排監(jiān)考的功能欄目。全校每一門功課的考試由教務(wù)處匯同各個院系的教務(wù)員根據(jù)實際情況統(tǒng)一安排,確定了考試的時間地點之后,再由相關(guān)院系的教務(wù)員安排監(jiān)考的老師,然后教務(wù)員發(fā)通知給監(jiān)考老師。這是教學(xué)管理系統(tǒng)中監(jiān)考安排的通用流程。然而,由于一些院系出臺了一些新的績效政策,監(jiān)考次數(shù)也包含在年終的績效里,這在之前是沒有的。教務(wù)員需要統(tǒng)計每一學(xué)年本學(xué)院每個老師的監(jiān)考次數(shù),而教學(xué)管理系統(tǒng)不能直接得出總的數(shù)據(jù),只能由教務(wù)員手工計算了。

還有很多其他的功能需求,是由各個崗位的不同用戶基于自己的操作習(xí)慣或新的形勢而產(chǎn)生的,限于篇幅,在此不一一贅述。如果增加一個定制化的客戶端,就可以增強客戶端包括打印在內(nèi)的多種業(yè)務(wù)處理能力,實現(xiàn)不同用戶的個性化需求。

2 系統(tǒng)架構(gòu)及組成

本客戶端設(shè)計的時候已經(jīng)充分考慮到可伸縮性,以方便未來的功能擴展。另外,無論功能怎么擴展,本客戶端還必須具備的一些基本功能。因此,規(guī)劃本客戶端的基本框架如圖2所示。

從圖2可以看出,本文所述的程序基礎(chǔ)功能如下:

圖2 基本框架圖

(1)常用信息查詢。可以用于查詢校歷和本校作息時間這類全校公共信息。

(2)院系通訊錄。用于保存維護本院系的教師通訊錄,同時也用于排功能的實現(xiàn)。

(3)備份。設(shè)定好備份路徑,可以執(zhí)行手工數(shù)據(jù)備份和還原功能。

(4)教師課程表。利用爬蟲技術(shù)把每個學(xué)期當(dāng)前客戶端用戶的課程表爬取到本機存放,并隨時能顯示出來。這樣教師只需登錄一次教學(xué)管理系統(tǒng)就獲取了當(dāng)前學(xué)期的課表了。

(5)排考管理。以院系通訊錄為基礎(chǔ),選取合適的教師參加各門課程的監(jiān)考,以盡量保證參與監(jiān)考的所有老師每一學(xué)年的監(jiān)考次數(shù)相等或大致相等。

(6)一些可擴展性的功能。這是預(yù)留部分,除了課程表和排考管理之外,依據(jù)未來具體使用者的使用習(xí)慣或要求而開發(fā)的一些功能。

上述這些基本功能一般都會以菜單項的形式顯示在主界面的菜單欄上。

3 關(guān)鍵技術(shù)實現(xiàn)

在對現(xiàn)有軟硬件系統(tǒng)不進行改造升級的前提下,又不改變用戶已經(jīng)形成的操作使用習(xí)慣,一個合適的方法就是在定制化的客戶端里整合進去一個瀏覽器控件。長期以來,瀏覽器分為三個主要的陣營,谷歌為首的Chrome、火狐瀏覽器、微軟的瀏覽器。經(jīng)過多年的競爭和發(fā)展,火狐瀏覽器已然式微,微軟的瀏覽器中一系列版本的IE 已經(jīng)被自家放棄了,新的Edge 瀏覽器使用的其實也是與Chrome 相同的內(nèi)核,只是各自進行了不同的封裝。國內(nèi)的一些公司開發(fā)的瀏覽器如搜狗、360等都采取了雙核模式,其兼容模式是封裝了IE 內(nèi)核,極速模式也是封裝了Chrome 瀏覽器組件。所以,可以說目前很多瀏覽器幾乎都使用了同一種內(nèi)核:Chromium Embedded Framework(CEF),這是一個支持HTML 5標(biāo)準(zhǔn)的開源框架??紤]到兼容性和易用性,本文也采用基于CEF 框架封裝的瀏覽器控件CEFSharp,它是一款.Net 編寫的瀏覽器包[4-5]。使用C#作為主要的編程語言,把CEFSharp 嵌入到程序中,開發(fā)一個Winform 桌面程序,使用Microsoft Access 數(shù)據(jù)庫保存運行中產(chǎn)生的各種信息,以增強教師端的業(yè)務(wù)處理能力。

3.1 CEFSharp的使用

定制化的客戶端是由WinForm 窗體構(gòu)成,并嵌入CEFSharp 組件。再在WinForm 窗體上添加一個Menu控件,通過各種菜單項與CEFSharp交互實現(xiàn)一些定制化的爬蟲功能。CEFSharp 組件內(nèi)置了很多接口,用于控制右鍵菜單、彈出窗口的方式、鍵盤監(jiān)聽、下載控制、協(xié)議控制、請求及響應(yīng)控制等。在程序啟動后,使用者看到的就是一個瀏覽器的界面。爬取特定的頁面內(nèi)容時,在繼承了ResourceRequestHandler 接口的類中,重寫OnResourceLoadComplete 等方法,以截獲想要的返回數(shù)據(jù)。

3.2 爬蟲技術(shù)

通過網(wǎng)絡(luò)爬蟲技術(shù)可以獲取網(wǎng)絡(luò)數(shù)據(jù)并進行處理。通用的爬蟲程序一般通過一個或若干個入口網(wǎng)址按照一定的策略抓取網(wǎng)頁中所需內(nèi)容并保存下來,再提取并過濾網(wǎng)頁中的有效地址放到待抓取的網(wǎng)址隊列里作為下一次爬取的入口地址??梢娕老x程序的主要框架包括4個部分:地址管理模塊、網(wǎng)頁下載模塊、網(wǎng)頁解析模塊和數(shù)據(jù)存儲模塊。地址管理模塊用于存放和管理各種超鏈接,包括已經(jīng)爬取過的網(wǎng)頁鏈接和尚未爬取的網(wǎng)頁鏈接。網(wǎng)頁下載模塊的主要功能是通過模擬客戶端發(fā)送HTTP請求,待服務(wù)器端響應(yīng)后下載網(wǎng)頁以實現(xiàn)爬取工作。網(wǎng)頁解析模塊是爬蟲程序的核心組件,主要用于對下載存儲的網(wǎng)頁信息進行解析,以獲得更加直觀有用的數(shù)據(jù)。數(shù)據(jù)存儲模塊的功能是把解析模塊解析出來的數(shù)據(jù)存儲起來,存儲為文件或者直接存儲到數(shù)據(jù)庫里用于后續(xù)的利用[6-9]。后續(xù)的使用因應(yīng)用場景不同而不同。

本文的爬蟲程序的技術(shù)原理與通用性爬蟲類似。因為是針對特定網(wǎng)站的,只需要分析該網(wǎng)站中某個具體網(wǎng)頁的內(nèi)容及地址鏈接。在具體的實踐過程中,需要用到抓包工具對網(wǎng)絡(luò)傳輸發(fā)送與接收的數(shù)據(jù)包進行分析。抓包工具有很多,但是既然本文僅針對教學(xué)管理系統(tǒng),沒有特別高的需求,所以就利用瀏覽器自帶的開發(fā)者工具(F12功能)作為抓包工具對相關(guān)頁面進行分析,確定請求方法及標(biāo)頭、響應(yīng)方式及標(biāo)頭、涉及元素或事件和所要獲取數(shù)據(jù)的格式,通常為XML或JSON等格式;再想辦法解析這些數(shù)據(jù)提取到有用的信息保存到本地數(shù)據(jù)庫中;最終在本地以其他的形態(tài)呈現(xiàn)出來方便使用者利用。

3.2.1 教師課程表的提取及展示

用戶登錄教學(xué)管理系統(tǒng)后,客戶端會跟蹤記錄登陸者的賬號(一般是教工號)。任課老師訪問一次自己的課表之后客戶端就會通過內(nèi)置的爬蟲程序爬取到該老師當(dāng)前學(xué)期的課表數(shù)據(jù),并保存在本地數(shù)據(jù)庫里,以后該老師不需要登錄系統(tǒng)就可以查看自己的當(dāng)期課表了,并且隨時可以打印自己的課程表。

在點擊課表查詢子模塊時,利用瀏覽器的F12 功能,可以查看對應(yīng)頁面的組成和各種元素,以及請求標(biāo)頭與響應(yīng)標(biāo)頭等數(shù)據(jù)。響應(yīng)標(biāo)頭的信息顯示課程表數(shù)據(jù)是JSON 格式,因此,在OnResourceLoadComplete 方法中,通過重寫實現(xiàn)IResponseFilter 接口進行攔截和篩選響應(yīng)數(shù)據(jù)。最終呈現(xiàn)結(jié)果如圖3所示。

圖3 課程表圖示

圖3顯示的信息就是正式的課程表內(nèi)容,點擊“打印課表”按鈕就可以打印出正式的課程表。如果已經(jīng)填寫了班級聯(lián)系人,在打印的時候也會在課程表下方附上班級聯(lián)系人一并打印出來。

3.2.2 排監(jiān)考信息的提取及展示

因為監(jiān)考場次會與收入掛鉤,所以盡量顯得公平并且次數(shù)明確而不會混亂,只有這樣才能讓人沒有怨言。目前的做法是針對某一門課程的考試院系那一級的教學(xué)管理人員會根據(jù)實際情況確定考試的時間和地點,再選擇合適的監(jiān)考老師。監(jiān)考老師的選擇要考慮兩個情況,一是優(yōu)先選擇監(jiān)考次數(shù)最少的老師,二是選擇的監(jiān)考老師不能和他們自己的課程或考試有沖突。安排好監(jiān)考老師后教學(xué)管理人員會把這次監(jiān)考記錄下來,統(tǒng)計各個老師的監(jiān)考次數(shù),以方便下次排考時參考。雖然排考都是在教學(xué)管理系統(tǒng)里操作的,但是目前的教學(xué)管理系統(tǒng)里并沒有直接統(tǒng)計各個老師的監(jiān)考次數(shù),所以每次排考都要計算一下哪些老師的監(jiān)考次數(shù)最少。有些負責(zé)排考的教學(xué)管理人員就只好使用最傳統(tǒng)的做法,每一學(xué)年就自己打印一張教師監(jiān)考次數(shù)表,然后在監(jiān)考次數(shù)那一列里為每個老師畫“正”字,一個“正”字表示監(jiān)考5次,這其實是很不方便的。

為了減輕排考人員的工作,實現(xiàn)自動記錄統(tǒng)計監(jiān)考次數(shù),本客戶端設(shè)計了一個同事通訊錄,包括教工號、姓名、電話號碼等信息。每次教學(xué)管理人員登錄系統(tǒng)安排考試的時候,本客戶端會再生成一個線程用于爬取已經(jīng)發(fā)布了的正式考試信息保存到本地數(shù)據(jù)庫里。利用瀏覽器的開發(fā)者工具對考試安排的查詢請求的響應(yīng)標(biāo)頭進行分析,發(fā)現(xiàn)返回的也是JSON 格式的數(shù)據(jù)。這些JSON 數(shù)據(jù)是嵌套的,第一個對象的值就是安排考試的總數(shù)。根據(jù)這個數(shù)值,再結(jié)合第二個對象里封裝的每條排考記錄的序號,并比對本地數(shù)據(jù)庫里的數(shù)據(jù),爬蟲程序會模擬分頁爬取到當(dāng)前所有沒爬過的記錄。這要記錄瀏覽器訪問時的cookies 內(nèi)容,并以此模擬向服務(wù)器發(fā)送多頁的請求。有時數(shù)據(jù)量可能會比較大,所以爬取程序是在后臺以異步線程的方式運行,以避免影響到其他操作。爬取下來并經(jīng)過整理后的監(jiān)考記錄如圖4所示。

圖4 監(jiān)考記錄顯示

從圖4可以看出,抓取的數(shù)據(jù)經(jīng)過取舍整理后保留了主要的信息。當(dāng)已經(jīng)公開的監(jiān)考信息被爬取到本地后,就可以統(tǒng)計每個老師的監(jiān)考次數(shù)了,并按從小到大的順序展示出來。在挑選新的監(jiān)考老師時,排考人員可以方便地選擇合適的監(jiān)考老師,也無需再通過畫“正”字來記錄每個老師的監(jiān)考次數(shù)了。

4 結(jié)語

利用爬蟲技術(shù)對教學(xué)管理系統(tǒng)進行客戶端開發(fā)是一個動態(tài)的、長期的過程,因為個性化需求會發(fā)生變化。本文介紹了當(dāng)前的教學(xué)管理系統(tǒng)的特點和架構(gòu),并探討了當(dāng)前的一些需求,進而論述了利用爬蟲技術(shù)而開發(fā)的教學(xué)管理系統(tǒng)客戶端的基本框架、思路及關(guān)鍵技術(shù)??蛻舳顺绦蜻€考慮了可擴展性,對教學(xué)管理系統(tǒng)的使用起到了良好的輔助作用。這種技術(shù)不僅僅可以用于教學(xué)管理系統(tǒng),還可用于校園的其他Web 系統(tǒng)或者其他領(lǐng)域。因此,本文所述具有一定的應(yīng)用價值,可以舉一反三推廣到其他領(lǐng)域,期待能為其他高校的建設(shè)提供參考。由于內(nèi)置了CEFSharp,本客戶端程序也可以當(dāng)成一般的瀏覽器使用。不過,有一點不足,就是CEFSharp安裝包有些大,比較占用空間。

猜你喜歡
課程表爬蟲監(jiān)考
利用網(wǎng)絡(luò)爬蟲技術(shù)驗證房地產(chǎn)灰犀牛之說
基于Excel VBA的考試管理系統(tǒng)設(shè)計
課程表
監(jiān)考時……
基于Python的網(wǎng)絡(luò)爬蟲和反爬蟲技術(shù)研究
超萌小鹿課程表
童話世界(2019年17期)2019-07-04 15:15:36
利用爬蟲技術(shù)的Geo-Gnutel la VANET流量采集
電子測試(2018年1期)2018-04-18 11:53:04
大數(shù)據(jù)環(huán)境下基于python的網(wǎng)絡(luò)爬蟲技術(shù)
電子制作(2017年9期)2017-04-17 03:00:46
青年課程表
金色年華(2016年8期)2016-02-28 01:39:58
監(jiān)考老師
大悟县| 安远县| 常德市| 郸城县| 哈尔滨市| 股票| 柘城县| 类乌齐县| 洮南市| 庄浪县| 综艺| 农安县| 清流县| 衡阳县| 沅陵县| 苍梧县| 屏山县| 新化县| 黄陵县| 达州市| 宁波市| 航空| 云安县| 贵港市| 江西省| 枞阳县| 丹凤县| 肥城市| 武邑县| 江永县| 崇文区| 德阳市| 南投县| 龙岩市| 河间市| 竹山县| 祥云县| 肃南| 开远市| 台山市| 将乐县|