劉霖 李德帥 胡家麟 石建鑫
摘 要:本研究主要是開發(fā)一個基于微信小程序的高校圖書館服務(wù)系統(tǒng)(以東北林業(yè)大學(xué)圖書館為例),該系統(tǒng)運(yùn)用已有的數(shù)字圖書系統(tǒng),應(yīng)用Python Web 爬蟲、Django Web框架等技術(shù);以微信小程序?yàn)檩d體實(shí)現(xiàn)一個具有較好用戶體驗(yàn)、低遷移成本、且交互屬性良好的移動圖書服務(wù)系統(tǒng)。
關(guān)鍵詞:微信小程序; 圖書館服務(wù); 互聯(lián)網(wǎng)爬蟲; Python
Abstract: This research is mainly to develop an university digital library service system based on the WeChat Mini Program (using Northeast Forestry University Library as an example). By using the existing digital library system and the technologies such as Python web crawler, DjangoWeb framework, etc, the paper designs and builds a WeChat mini program which is used as a carrier to implement a mobile library service system with good user experience, low migration cost and good interaction attributes.
Key words: Wechat mini program; library service; Web crawler; Python
引言
受當(dāng)前移動互聯(lián)網(wǎng)浪潮的影響,大量高校圖書館陸續(xù)對其館藏資源進(jìn)行相應(yīng)的數(shù)字化改造。但由于其服務(wù)系統(tǒng)大多基于傳統(tǒng)的B/S架構(gòu),對移動端設(shè)備適配性不佳,因而在實(shí)際使用中存在使用體驗(yàn)較差,部分功能實(shí)時交互性差等一系列問題。
針對上述問題,直接開發(fā)相關(guān)平臺的APP自然是一種較好的解決方案,但此方案也存在遷移、推廣成本高、臃腫繁雜之類的弊端。使用微信小程序能較好地彌補(bǔ)上述一系列不足,只要用戶安裝了微信的客戶端,即可方便地獲取并使用相關(guān)的服務(wù)。在利用微信龐大的用戶基數(shù)降低開發(fā)成本的同時還擁有接近于APP的使用體驗(yàn)。
因此,本文討論并設(shè)計了一個基于微信小程序?qū)崿F(xiàn)移動圖書館服務(wù)系統(tǒng)(以東北林業(yè)大學(xué)圖書館為例),通過使用Web爬蟲從現(xiàn)有的圖書館服務(wù)系統(tǒng)中爬取相應(yīng)的數(shù)據(jù),并通過一系列處理,從而令用戶在較低的遷移成本上使用該系統(tǒng)所提供的一系列服務(wù)。
1 關(guān)鍵技術(shù)
本系統(tǒng)主要使用Python Django Web框架及微信小程序開發(fā),所使用關(guān)鍵開發(fā)技術(shù)如下所述。
1.1 Django Web框架
Django是一種十分高效敏捷的Web 框架[1]。基于Python,采用了MTV的框架模式,即模型(Model)、模板(Template)和視圖(View);從而實(shí)現(xiàn)了數(shù)據(jù)、業(yè)務(wù)、展現(xiàn)的分層;這在增進(jìn)項(xiàng)目規(guī)范性的同時也令其更易維護(hù)。此外,Django還支持第三方插件擴(kuò)展。Django Web框架主要用于實(shí)現(xiàn)對后臺相關(guān)功能的封裝。
1.2 微信小程序
微信小程序是騰訊公司基于微信客戶端構(gòu)建開發(fā)實(shí)現(xiàn)的Web應(yīng)用程序,其在擁有接近于本地APP的用戶體驗(yàn)的同時也極大地縮減了應(yīng)用的開發(fā)遷移成本。同時,依托騰訊微信龐大的用戶量,微信小程序也有著極好的社交性和低推廣成本。在系統(tǒng)中,微信小程序是實(shí)現(xiàn)服務(wù)的主要載體。
1.3 Ajax技術(shù)
Ajax(Asynchronous Javascript And XML)是一種創(chuàng)建交互式網(wǎng)頁應(yīng)用的網(wǎng)頁開發(fā)技術(shù)。具體而言就是通過前端調(diào)用 Ajax提交請求,將請求傳遞給后臺,后臺再通過與服務(wù)器交互,調(diào)用數(shù)據(jù)庫獲取持久化信息后進(jìn)行少量的數(shù)據(jù)交換,實(shí)現(xiàn)前端界面的更新。 Ajax 可以使網(wǎng)頁實(shí)現(xiàn)異步更新[2]。在系統(tǒng)中, Ajax跨域操作是完成前后端通信的最主要的方法。
1.4 Rest
Rest(representational state transfer, 即表象性狀態(tài)轉(zhuǎn)變或者表述性狀態(tài)轉(zhuǎn)移)[3]是Web服務(wù)的一種架構(gòu)風(fēng)格,使用HTTP、URL、XML、JSON、HTML等廣泛流行的標(biāo)準(zhǔn)和協(xié)議,是一種輕量級、跨平臺、跨語言的架構(gòu)設(shè)計。
2 系統(tǒng)功能分析與設(shè)計
2.1 系統(tǒng)需求分析與設(shè)計
2.1.1 國內(nèi)現(xiàn)狀與功能
當(dāng)前國內(nèi)高校圖書服務(wù)系統(tǒng)大多以傳統(tǒng)PC為載體,主要實(shí)現(xiàn)功能如下:
(1)OPAC系統(tǒng)集成的相關(guān)服務(wù),包括館藏目錄檢索、個人借閱信息的查閱、圖書的續(xù)借與預(yù)約、借閱證的掛失[4]。
(2)電子資源文獻(xiàn)服務(wù),包括電子資源的檢索、全文瀏覽及下載、文獻(xiàn)傳遞[4]。
(3)信息公告服務(wù),包括圖書館公告,新資源通知[4]。
(4)信息咨詢交流互動服務(wù),包括信息咨詢、圖書評論、交流互動等[4]。
2.1.2 功能設(shè)計
由于本系統(tǒng)是以微信小程序?yàn)檩d體,而微信作為微信小程序的實(shí)現(xiàn)載體,為微信小程序提供了大
量擴(kuò)展實(shí)用功能;為利用好這些特性,提高用戶體驗(yàn)水平,本系統(tǒng)具體功能設(shè)計如下:
(1)OPAC。該部分功能包括圖書信息二維碼的生成,館藏目錄檢索以及個人借閱信息情況查詢;其中為利用微信的相關(guān)組件,人們在館藏目錄檢索中增加了二維碼掃碼檢索的功能。
(2)信息公告。該部分功能包括圖書公告及新資源公告。
(3)交流互動。該部分功能包括圖書薦購、信息資訊即交流互動;該部分主要通過微信的客服套件予以實(shí)現(xiàn)。
(4)數(shù)據(jù)維護(hù)。該部分功能包括圖書館藏信息持久化,此功能通過爬蟲框架對已有的圖書館藏系統(tǒng)相關(guān)信息進(jìn)行定期的整站爬取。
功能結(jié)構(gòu)如圖1所示。
2.2 物理架構(gòu)設(shè)計
根據(jù)東北林業(yè)大學(xué)校園數(shù)字圖書系統(tǒng)拓補(bǔ)圖[5],具體設(shè)計如圖2所示。
2.3 系統(tǒng)架構(gòu)設(shè)計
本系統(tǒng)使用MVC開發(fā)模式。部分遵守RESTful[6],結(jié)合業(yè)務(wù)需求后具體設(shè)計如圖3所示。
architecture design
3 主要功能實(shí)現(xiàn)
3.1 與微信相關(guān)服務(wù)的集成與實(shí)現(xiàn)
系統(tǒng)微信登錄相關(guān)操作使用微信小程序自帶的登錄認(rèn)證體系,具體操作流程如圖4所示。
3.2 主要功能的集成與實(shí)現(xiàn)
3.2.1 館藏目錄檢索
由于東北林業(yè)大學(xué)內(nèi)網(wǎng)中已建有一套完整的Web版圖書OPAC檢索系統(tǒng),因此可以直接通過python requests庫發(fā)送符合具體業(yè)務(wù)需求的request請求,至已有的OPAC系統(tǒng)去獲取具體的結(jié)果。使用python自帶的正則表達(dá)式或Xpath解析式模塊去提取返回結(jié)果中需要的信息,最后將提取的結(jié)果轉(zhuǎn)換成Json返回給此服務(wù)請求方。
由于外網(wǎng)訪問內(nèi)網(wǎng)資源,存在服務(wù)不穩(wěn)定的問題,因此在內(nèi)網(wǎng)服務(wù)無法正常訪問時,將直接查詢緩存至外網(wǎng)服務(wù)器上的圖書數(shù)據(jù)節(jié)點(diǎn)。目錄查詢操作流程如圖5所示。
3.2.2 個人借閱信息查詢
雖然通過登錄Web版東北林業(yè)大學(xué)數(shù)字圖書OPAC系統(tǒng)可直接查看目標(biāo)用戶的借閱信息;而絕大部分用戶并不知道自己的圖書館賬號信息。由于東北林業(yè)大學(xué)的WIFI系統(tǒng)是以東北林業(yè)大學(xué)數(shù)字東林系統(tǒng)賬號作為登錄憑證,令該賬戶信息在人們的目標(biāo)用戶中具有良好的推廣度;同時數(shù)字東林系統(tǒng)中存在有圖書館應(yīng)用。因此本系統(tǒng)使用數(shù)字東林賬戶為模擬登錄依據(jù),通過使用requests庫模擬登錄數(shù)字東林系統(tǒng)后,使用數(shù)字圖書館應(yīng)用跳轉(zhuǎn)至Web版圖書OPAC系統(tǒng)獲取并解析返回Json結(jié)果。個人借閱信息查詢操作流程如圖6所示。
4 結(jié)束語
基于微信小程序的高校移動圖書服務(wù)系統(tǒng),通過分析高校移動數(shù)字服務(wù)系統(tǒng)的現(xiàn)狀,結(jié)合已有的數(shù)字圖書館系統(tǒng),采用Django框架、基于Web技術(shù)
利用微信平臺實(shí)現(xiàn)了高校移動數(shù)字圖書服務(wù)系統(tǒng)設(shè)計,實(shí)現(xiàn)了OPAC集成、信息咨詢、互動等功能。本系統(tǒng)采用了最新的Web開發(fā)技術(shù),使用的框架具有低耦合性,方便系統(tǒng)二次開發(fā)及后期維護(hù)。
參考文獻(xiàn)
[1] 王冉陽. 基于Django和Python的Web開發(fā)[J]. 電腦編程技巧與維護(hù), 2009(2):56-58.
[2] HOLDENERIII A T. Ajax權(quán)威指南[M]. 陳宗斌,等譯. 機(jī)械工業(yè)出版社, 2009.
[3] 唐明偉, 卞藝杰, 陶飛飛. RESTful架構(gòu)下圖書管理系統(tǒng)的研究與實(shí)現(xiàn)[J]. 現(xiàn)代圖書情報技術(shù), 2010, 26(9):84-89.
[4] 李玉紅. 國內(nèi)“211”高校圖書館移動信息服務(wù)發(fā)展?fàn)顩r[J]. 現(xiàn)代情報, 2014, 34(3):78-81.
[5] 張鳳斌, 林希森. 東北林業(yè)大學(xué)圖書館新館網(wǎng)絡(luò)系統(tǒng)解決方案[J]. 大學(xué)圖書館學(xué)報, 2003, 21(5):56-59.
[6] FIELDING R. Architectural styles and the design of network-based software architectures[D]. Irvine:University of California, 2000.
[7] 劉衛(wèi)東, 徐恪, 劉亞霄. 松散耦合的分布式信息系統(tǒng)[J]. 清華大學(xué)學(xué)報(自然科學(xué)版), 2002, 42(1):40-43.
[8] 安春玲. 微信小程序在圖書館移動服務(wù)中的應(yīng)用研究[J]. 當(dāng)代教育實(shí)踐與教學(xué)研究:電子版, 2017(9):260.
[9] 張建中, 黃艷飛, 熊擁軍. 基于ElasticSearch的數(shù)字圖書館檢索系統(tǒng)[J]. 計算機(jī)與現(xiàn)代化, 2015(6):69-73.
[10]米碩, 孫瑞彬, 李欣,等. Scrapy分布式爬蟲原理分析與概述[J]. 中國新通信, 2018(4):234.