吳君勝
(廣州開放大學(xué),廣東 廣州 510091)
圖書館是廣大市民進(jìn)行終身學(xué)習(xí)的公共文化教育機(jī)構(gòu),可謂是沒有圍墻的大學(xué)。近年來,廣州推動全面終身學(xué)習(xí),建設(shè)學(xué)習(xí)型城市,各級黨委和政府均高度重視圖書館事業(yè),不僅建成了國內(nèi)一流的廣州圖書館,還聯(lián)合各級政府投巨資建設(shè)區(qū)、鎮(zhèn)(街道)和社區(qū)圖書館,將圖書館或圖書室?guī)缀跎钊氲矫恳粋€社區(qū),形成全市一體的市公共圖書館服務(wù)網(wǎng)絡(luò),廣州現(xiàn)正打造“圖書館之城”。廣州市其他公共圖書館以廣州圖書館為中心實(shí)現(xiàn)通借通還和文獻(xiàn)資源共享,分別成為各區(qū)、鎮(zhèn)(街道)和社區(qū)的學(xué)習(xí)中心,成為社區(qū)教育的主要力量之一。那么,高校圖書館在學(xué)習(xí)型城市建設(shè)中如何面向社會服務(wù)?就服務(wù)網(wǎng)絡(luò)的結(jié)構(gòu)而言,開放大學(xué)的體系辦學(xué)優(yōu)勢,為圖書館服務(wù)網(wǎng)絡(luò)的快速建立創(chuàng)造了條件。
國家開放大學(xué)的辦學(xué)組織體系由總部、分部、地方學(xué)院、學(xué)習(xí)中心和行業(yè)、企業(yè)學(xué)院共同組成。以廣州開放大學(xué)為例,作為國家開放大學(xué)的廣州分部,辦學(xué)宗旨是構(gòu)建服務(wù)全民終身學(xué)習(xí)的教育體系,形成了以校本部為分支領(lǐng)導(dǎo)機(jī)構(gòu)、43所分校為分支機(jī)構(gòu)的辦學(xué)體系,校本部和分校都自有圖書館或圖書室,可形成圖書資源信息一體化服務(wù)的圖書館服務(wù)網(wǎng)絡(luò)。分校地理位置遍布廣州城區(qū)11個行政區(qū),具有分布點(diǎn)多而分散的特點(diǎn)。而且由于分校均為獨(dú)立于校本部的法人單位,所設(shè)立的圖書館或圖書室具有獨(dú)立性,圖書管理系統(tǒng)存在自成體系、互不兼容的問題,形成各自的信息孤島。
開放大學(xué)的辦學(xué)體系優(yōu)勢,為構(gòu)建服務(wù)全民終身學(xué)習(xí)的開放大學(xué)圖書館的數(shù)字化轉(zhuǎn)型帶來了發(fā)展機(jī)遇也帶來了挑戰(zhàn)。
首先,結(jié)構(gòu)不均衡,利用不充分。國家提倡全面終身學(xué)習(xí),部分高校圖書館作為先行者,逐漸面向社會公眾提供服務(wù),實(shí)行總校區(qū)與分校區(qū)聯(lián)動一體化服務(wù)。而以促進(jìn)終身學(xué)習(xí)為使命的開放大學(xué),由于其辦學(xué)系統(tǒng)中各主體的原辦學(xué)性質(zhì)、辦學(xué)層次、辦學(xué)規(guī)模有所不同,各自擁有的文獻(xiàn)資源差異較大。以廣州開放大學(xué)為例,校本部圖書館的信息化服務(wù)較好,而分校圖書館、教學(xué)點(diǎn)圖書室的文獻(xiàn)資源規(guī)模、信息化服務(wù)卻參差不齊,文獻(xiàn)資源所發(fā)揮的作用有限。
其次,服務(wù)傳統(tǒng)化,服務(wù)不全面。以廣州開放大學(xué)為例,為助力學(xué)習(xí)型社會建設(shè),圖書館的館藏資源從主要圍繞開放教育的學(xué)科專業(yè)、教學(xué)科研而建設(shè),逐步向?qū)W歷教育與非學(xué)歷教育并重的方向發(fā)展,數(shù)字化資源建設(shè)占比逐步提高。但高校圖書館的館藏資源主要為校內(nèi)師生服務(wù),即便一些高校圖書館面向社會開放,但服務(wù)的對象、地點(diǎn)、類別等特定性因素都使得社會服務(wù)率偏低[1]。傳統(tǒng)服務(wù)難以滿足開放大學(xué)學(xué)習(xí)者的需求。實(shí)現(xiàn)跨區(qū)、跨校的就近借閱服務(wù)以及數(shù)字資源的共建共享,才能滿足學(xué)習(xí)者的需求,促進(jìn)學(xué)習(xí)型社會的發(fā)展。
針對上述問題,筆者以廣州開放大學(xué)為例,利用網(wǎng)絡(luò)爬蟲技術(shù)快速建立文獻(xiàn)資源信息庫,提供一套可突破數(shù)據(jù)信息壁壘、在辦學(xué)系統(tǒng)內(nèi)實(shí)現(xiàn)文獻(xiàn)資源匯聚并提供智能服務(wù)的應(yīng)用方案。本系統(tǒng)重點(diǎn)實(shí)現(xiàn)對開放系統(tǒng)的文獻(xiàn)資源采集,通過建立知識庫,實(shí)現(xiàn)辦學(xué)系統(tǒng)內(nèi)文獻(xiàn)資源與知識庫的比對,綜合分析知識熱點(diǎn)、位置信息、文獻(xiàn)形式、排行數(shù)據(jù)等維度,通過微信小程序?yàn)樽x者提供智能薦選服務(wù)。因此,系統(tǒng)應(yīng)用應(yīng)滿足以下需求:
(一)校本部實(shí)現(xiàn)全量文獻(xiàn)數(shù)據(jù)采集,實(shí)現(xiàn)爬取包括圖書管理系統(tǒng)、在線圖書信息查詢系統(tǒng)、教職工論文等文獻(xiàn)信息系統(tǒng),實(shí)現(xiàn)導(dǎo)入結(jié)構(gòu)化文獻(xiàn)數(shù)據(jù)信息;分校數(shù)據(jù)爬取方式類似。
(二)根據(jù)文獻(xiàn)熱點(diǎn)信息、圖書借閱信息、圖書采購清單、研究熱點(diǎn)分析、學(xué)校官網(wǎng)信息,通過網(wǎng)絡(luò)爬蟲獲取文獻(xiàn)熱點(diǎn)數(shù)據(jù),建立文獻(xiàn)資源熱點(diǎn)標(biāo)簽,通過熱點(diǎn)文獻(xiàn)分析、圖書借閱需求分析、數(shù)字文獻(xiàn)閱讀數(shù)據(jù)分析、學(xué)校發(fā)展規(guī)劃詞頻分析等技術(shù),實(shí)現(xiàn)圖書文獻(xiàn)的推送薦選。
(三)利用微信小程序龐大的用戶群體優(yōu)勢,能直接獲取終身教育學(xué)習(xí)者的有效數(shù)據(jù),能快速有效獲取讀者需求,文獻(xiàn)薦選能滿足開放大學(xué)教師、科研人員、終身教育學(xué)習(xí)者等的圖書需求[2]。
網(wǎng)絡(luò)爬蟲可以按照一定的規(guī)則自動抓取程序或腳本的數(shù)據(jù),可以實(shí)現(xiàn)快速建設(shè)圖書信息資源庫。以廣州開放大學(xué)為例,具體分為五個步驟:第一,確定目標(biāo)相關(guān)網(wǎng)站,從網(wǎng)絡(luò)上獲取有價值的網(wǎng)頁內(nèi)容,如館藏查詢(內(nèi)網(wǎng))、知網(wǎng)搜索、讀秀搜索、歷屆試題、國開圖書館、學(xué)校官方網(wǎng)站等系統(tǒng);第二,分析網(wǎng)頁內(nèi)容,提取有用數(shù)據(jù)并存儲到新建數(shù)據(jù)表;第三,建立標(biāo)簽庫,將管理對象進(jìn)行標(biāo)簽化管理;第四,統(tǒng)計(jì)數(shù)據(jù)或運(yùn)用人工智能算法進(jìn)一步分析數(shù)據(jù);第五,自動匹配并檢查圖書或文獻(xiàn)信息來源的可用性,生成鏈接后智能化推送圖書,根據(jù)用戶操作數(shù)據(jù)形成新的實(shí)時消息數(shù)據(jù)。運(yùn)行模式如圖1所示。
圖1 圖書薦選運(yùn)行模式圖
根據(jù)網(wǎng)絡(luò)爬蟲的技術(shù)特性,可以進(jìn)一步構(gòu)建基于大數(shù)據(jù)的智慧圖書館信息化系統(tǒng),實(shí)現(xiàn)跨平臺、跨系統(tǒng)的多源數(shù)據(jù)采集,包括圖書、報(bào)紙、期刊、新聞及其電子出版物等各類文獻(xiàn)。通過開放大學(xué)的辦學(xué)體系,建立圖書信息資源共建共享機(jī)制,可提供智能圖書查詢、圖書智能薦選、智慧圖書館信息可視化等應(yīng)用,技術(shù)框架圖如圖2所示。
圖2 技術(shù)框架圖
Python是一種跨平臺的計(jì)算機(jī)編程語言,可用于編寫網(wǎng)絡(luò)爬蟲程序。網(wǎng)絡(luò)爬蟲又被稱為網(wǎng)絡(luò)蜘蛛或網(wǎng)絡(luò)機(jī)器人,可以自動采集互聯(lián)網(wǎng)信息的程序或腳本。Python抓取技術(shù)分為兩個環(huán)節(jié):數(shù)據(jù)爬取和數(shù)據(jù)解析。
(一)urllib庫的使用
數(shù)據(jù)的爬取由python內(nèi)置的模塊urllib進(jìn)行,可以處理http網(wǎng)絡(luò)協(xié)議。urllib是早期Python使用的版本,筆者使用Python3.8.1,下載urllib3并以pip命令進(jìn)行安裝。urllib3需要先生成連接池,單線程操作是一個連接池,然后使用request庫。[3]以下是初始化代碼:
data={"searchSource":"searchSource","rows":"10","sortOrder":"desc","q":"TN","curlibcode":"GT","hashholding":"1","searchWay":"class"}
http=urllib3.PoolManager(num_pools=1,headers={'User-Agent':"ABCD"});
request=http.request('G E T',"h t tp://172.29.254.226:8080/ILASOPAC/",fields=data);
html=request.data.decode( );
參數(shù)fields是相當(dāng)于填好的網(wǎng)頁的表單form內(nèi)容,參數(shù)headers可以定義http請求的頭部,多數(shù)用作仿真瀏覽器。
(二)BeautifulSoup庫的使用
BeautifulSoup是可以從HTML或XML中提取有用的數(shù)據(jù),以pip命令安裝BeautifulSoup4。以下是取得具有鏈接的內(nèi)容的代碼:
parser="html.parser"
for tag in soup.find_all('a'):...
(三)統(tǒng)一編碼
由于提取數(shù)據(jù)以中文為主,網(wǎng)站的編碼通常是utf-8,而Python3以上版本的默認(rèn)編碼是unicode,在處理中文字符串時,往往不能直接比較,要先進(jìn)行統(tǒng)一編碼:
tag.text.strip( ).encode('cp936')=='借閱'.encode('cp936')
(四)socket模塊的使用
程序使用Python內(nèi)置的socket模塊進(jìn)行數(shù)據(jù)傳輸。socket使用TCP編程,其中server部分(位于代理程序)的相關(guān)代碼如下:
s=socket.socket(socket.AF_INET,socket.
SOCK_STREAM)
s.bind((host,port))
工作室制度最大的特點(diǎn)就是與教學(xué)內(nèi)容相掛鉤,可以說是工作室生命力的體現(xiàn),教學(xué)方法和教學(xué)的可操作性是教學(xué)內(nèi)容完美體現(xiàn)的關(guān)鍵之處,職業(yè)能力的完美與否在于所培養(yǎng)的人才是否具備這種專業(yè),跨行業(yè)的優(yōu)秀能力。因?yàn)轫?xiàng)目在實(shí)行的過程中免不了回經(jīng)受來自外界,來自社會的考驗(yàn),所以教師不僅要有優(yōu)秀的專業(yè)能力,還要有跨行業(yè)的能力,這也促使工作室實(shí)施教學(xué)內(nèi)容是要把職業(yè)關(guān)鍵能力和素質(zhì)培養(yǎng)作為重點(diǎn),并在考核中進(jìn)行檢驗(yàn)。
s.listen(2)
conn,addr=s.accept( )print("Connected")
res= conn.recv(1024)if res[0]==0x68:
conn.sendall(reply)client程序(位于服務(wù)器)關(guān)鍵代碼如下:
s=socket.socket(socket.AF_INET,socket.
SOCK_STREAM)
s.connect((host,port))
res=s.recv(1024)
data=bytes(request,encoding='utf-8')
s.send(data)
(五)threading模塊的使用
程序因?yàn)橐瑫r處理幾個網(wǎng)絡(luò)請求,使用多線程編程。使用了內(nèi)置的threading模塊,主要代碼如下:
import threading
t1=threading.Thread(target=download,name='in tenetrec',args=(1,))
t1.start( )
同時也少量使用了線程同步鎖,直接使用threading.Lock/Rlock( )。
多數(shù)據(jù)源的數(shù)據(jù)采集涉及多種平臺,如圖書查詢系統(tǒng)、歷屆試題查詢系統(tǒng)、學(xué)校官網(wǎng)、中國知網(wǎng)、維普網(wǎng)、百度學(xué)術(shù)等,多種異構(gòu)平臺之間的相互切換、數(shù)據(jù)采集和數(shù)據(jù)展示是實(shí)現(xiàn)系統(tǒng)的基礎(chǔ)功能,數(shù)據(jù)采集是整個系統(tǒng)的核心[4]。網(wǎng)絡(luò)爬蟲按照系統(tǒng)結(jié)構(gòu)和實(shí)現(xiàn)技術(shù)可以分為:通用型、聚焦性、增量型和深層網(wǎng)絡(luò)爬蟲,針對不同的系統(tǒng)設(shè)計(jì)不同的網(wǎng)絡(luò)爬蟲。
(一)智能圖書信息資源建設(shè)技術(shù)框架設(shè)計(jì)
以廣州開放大學(xué)為例,校本部數(shù)字圖書館只能在內(nèi)部網(wǎng)絡(luò)查詢,數(shù)據(jù)采集要在內(nèi)網(wǎng)設(shè)置代理或內(nèi)網(wǎng)直接爬取采集,而分校的圖書信息共享需要在辦學(xué)制度中形成機(jī)制,才能實(shí)現(xiàn)共建共享。
代理程序通過廣度優(yōu)先遍歷策略頁面收集圖書數(shù)據(jù),以合法的方式實(shí)時傳遞給云服務(wù)器,如圖3所示,最終更新云服務(wù)器數(shù)據(jù)。云服務(wù)器通過微信小程序?qū)ν馓峁﹫D書查詢服務(wù)。用戶輸入查詢的書目,云服務(wù)器從本地?cái)?shù)據(jù)庫中查詢書籍信息和書籍所在圖書館等數(shù)據(jù),實(shí)時庫存信息則是在使用者選擇了圖書館后再發(fā)出指令讓該圖書館的代理程序搜索送回來。
圖3 代理程序采集數(shù)據(jù)
云服務(wù)與代理程序的運(yùn)行模式如圖4所示。
圖4 代理程序采集數(shù)據(jù)運(yùn)行模式
(二)圖書信息資源的數(shù)據(jù)特點(diǎn)
云服務(wù)器提供數(shù)據(jù)存儲和查詢的作用,代理程序可以根據(jù)實(shí)際情況決定是實(shí)時采集還是定時采集定期更新數(shù)據(jù)到云服務(wù)器。針對每個代理端,就圖書而言,需要設(shè)定的參數(shù)一般包括:電子圖書館搜索頁面的URL、搜索頁面表單提交數(shù)據(jù)的方式GET/POST、搜索頁面表單的參數(shù),尤其是翻頁的參數(shù)名。圖書的書目往往按照“中圖分類法”進(jìn)行分類,分為5大部分,22個基本大類。5個部分包括馬列主義、毛澤東思想,哲學(xué),社會科學(xué),自然科學(xué),綜合性圖書等五大部類。部類下再進(jìn)行更細(xì)化的分類,比如:TM電工技術(shù),TN電子技術(shù)、通信技術(shù),TP自動化技術(shù)、計(jì)算機(jī)技術(shù),TQ化學(xué)工業(yè)。我們使用第二級分類進(jìn)行搜索,搜集數(shù)據(jù)。但這種搜索也會產(chǎn)生一些數(shù)據(jù)重復(fù),比如,搜索F1可能是“世界各國經(jīng)濟(jì)概況、經(jīng)濟(jì)史、經(jīng)濟(jì)地理”類別,也可能是含有F1賽車的書名。
對于收集到的圖書數(shù)據(jù),有相關(guān)關(guān)鍵字,這些關(guān)鍵字對不同的圖書館有很多同義詞,采集的時候需要考慮清洗后數(shù)據(jù)規(guī)劃的問題,如表1所示。
表1 同義詞問題
圖書館信息資源建設(shè)的數(shù)量和質(zhì)量是圖書館建設(shè)實(shí)力的重要體現(xiàn),影響著圖書館信息服務(wù)的水平和形象。圖書館信息資源建設(shè)包括圖書資源建設(shè)、文獻(xiàn)資源建設(shè)、數(shù)據(jù)庫建設(shè)、網(wǎng)絡(luò)信息資源建設(shè)等。
(一)基于網(wǎng)絡(luò)爬蟲的功能設(shè)計(jì)
1.代理程序的信息存儲
不同的信息資源所在的網(wǎng)絡(luò)環(huán)境可能不同,內(nèi)網(wǎng)系統(tǒng)需要設(shè)計(jì)代理端爬取數(shù)據(jù)。服務(wù)器端需要存儲代理程序基本信息、配置信息和同步信息,代理端采集器信息如圖5所示。
圖5 代理端存儲的信息
2.代理程序的采集線程設(shè)計(jì)
代理程序作為采集器,可設(shè)計(jì)多個線程,本案例中以圖書信息資源為例,設(shè)計(jì)了一個庫存線程,如圖6所示,負(fù)責(zé)接收服務(wù)器的命令查詢圖書的實(shí)時庫存量;設(shè)計(jì)了另一個定時同步線程,如圖7所示,負(fù)責(zé)按約定采集時間、傳輸圖書信息到服務(wù)器。
圖6 圖書查庫存線程流程
圖7 圖書庫存同步線程流程
3.服務(wù)器功能設(shè)計(jì)
云服務(wù)器負(fù)責(zé)將多源數(shù)據(jù)采集后進(jìn)行匯聚、清洗、存儲和計(jì)算,通過建立不同主題的數(shù)倉,為應(yīng)用程序提供數(shù)據(jù)支撐服務(wù)。云服務(wù)器連接代理服務(wù)程序的服務(wù)端除了接收各個代理程序同步過來的圖書信息,還可以發(fā)出實(shí)時查詢命令以及提供查詢、維護(hù)界面的功能。同時服務(wù)器為微信端智慧圖書館信息資源小程序提供應(yīng)用功能。
4.數(shù)據(jù)安全技術(shù)設(shè)計(jì)
具備秒級準(zhǔn)實(shí)時數(shù)據(jù)接入能力,保證數(shù)據(jù)的安全性、一致性和準(zhǔn)確性。數(shù)據(jù)傳輸過程中對敏感信息采用壓縮和加密,設(shè)計(jì)采集和連接的審計(jì)管理功能,詳細(xì)記錄采集、連接、操作等信息,并且這些記錄都是只讀的,不得修改和刪除,為安全性審計(jì)提供保障。
(二)基于網(wǎng)絡(luò)爬蟲的圖書信息資源建設(shè)
以廣州開放大學(xué)為例,為了獲取圖書信息資源,需要通過全庫數(shù)據(jù)查詢界面。首先在廣州開放大學(xué)數(shù)字圖書館網(wǎng)站的查詢檢索界面進(jìn)入全庫圖書查詢界面,根據(jù)不同的圖書分類遍歷網(wǎng)站上所有圖書鏈接信息,全量采集圖書館藏書的圖書數(shù)據(jù),新建圖書數(shù)據(jù)表,存儲圖書的信息包括書名、作者、圖書編號、類別、出版社、簡介、金額、所在地、ISBN號、庫存量、圖片等。然后根據(jù)ISBN號在當(dāng)當(dāng)網(wǎng)、京東網(wǎng)、出版社官網(wǎng)采集圖書商品鏈接獲取圖書簡介、價格、評價等有用數(shù)據(jù),從而存儲和分析獲得的比價數(shù)據(jù)、熱度數(shù)據(jù)等,實(shí)現(xiàn)薦選圖書。
(三)基于網(wǎng)絡(luò)爬蟲的文獻(xiàn)信息資源建設(shè)
為了獲取文獻(xiàn)信息資源,以廣州開放大學(xué)為例,內(nèi)部文獻(xiàn)的歷屆題庫查詢系統(tǒng)類似圖書信息資源建設(shè)的方式,外部文獻(xiàn)的實(shí)施過程與細(xì)節(jié),需要向查詢引擎自動提交關(guān)鍵字并獲取查詢結(jié)構(gòu)。根據(jù)校內(nèi)教職工的基礎(chǔ)數(shù)據(jù),首先可以在中國知網(wǎng),輸入姓名及合并檢索“廣州市廣播電視大學(xué)”或“廣州開放大學(xué)”的關(guān)鍵字,網(wǎng)站將查詢轉(zhuǎn)換為鏈接,通過requests庫的get( )函數(shù),將鏈接中的關(guān)鍵詞作為參數(shù),自動提交查詢;然后提取有用數(shù)據(jù)存儲,從而存儲和分析獲得的下載量、引用量、文章關(guān)鍵詞熱度等,實(shí)現(xiàn)為學(xué)術(shù)速遞、熱點(diǎn)研究等進(jìn)行文獻(xiàn)推薦。
本文積極探索圖書館信息資源系統(tǒng)的建設(shè),智慧圖書館信息資源系統(tǒng)處于開發(fā)應(yīng)用初期階段,技術(shù)上實(shí)現(xiàn)了校本部圖書信息資源的采集并完成微信小程序快速檢索文獻(xiàn)的全過程開發(fā),為開放大學(xué)智慧圖書館的信息資源建設(shè)提供了有力的支撐。開放大學(xué)的大規(guī)模體系化辦學(xué)是本文技術(shù)應(yīng)用的基礎(chǔ),網(wǎng)絡(luò)爬蟲技術(shù)為建設(shè)基于大數(shù)據(jù)的智慧圖書平臺提供了可參考的技術(shù)框架,但由于多源數(shù)據(jù)采集是系統(tǒng)設(shè)計(jì)的關(guān)鍵,如何突破各種系統(tǒng)壁壘仍需要進(jìn)一步研究。