吴君胜
(广州开放大学,广东 广州 510091)
图书馆是广大市民进行终身学习的公共文化教育机构,可谓是没有围墙的大学。近年来,广州推动全面终身学习,建设学习型城市,各级党委和政府均高度重视图书馆事业,不仅建成了国内一流的广州图书馆,还联合各级政府投巨资建设区、镇(街道)和社区图书馆,将图书馆或图书室几乎深入到每一个社区,形成全市一体的市公共图书馆服务网络,广州现正打造“图书馆之城”。广州市其他公共图书馆以广州图书馆为中心实现通借通还和文献资源共享,分别成为各区、镇(街道)和社区的学习中心,成为社区教育的主要力量之一。那么,高校图书馆在学习型城市建设中如何面向社会服务?就服务网络的结构而言,开放大学的体系办学优势,为图书馆服务网络的快速建立创造了条件。
国家开放大学的办学组织体系由总部、分部、地方学院、学习中心和行业、企业学院共同组成。以广州开放大学为例,作为国家开放大学的广州分部,办学宗旨是构建服务全民终身学习的教育体系,形成了以校本部为分支领导机构、43所分校为分支机构的办学体系,校本部和分校都自有图书馆或图书室,可形成图书资源信息一体化服务的图书馆服务网络。分校地理位置遍布广州城区11个行政区,具有分布点多而分散的特点。而且由于分校均为独立于校本部的法人单位,所设立的图书馆或图书室具有独立性,图书管理系统存在自成体系、互不兼容的问题,形成各自的信息孤岛。
开放大学的办学体系优势,为构建服务全民终身学习的开放大学图书馆的数字化转型带来了发展机遇也带来了挑战。
首先,结构不均衡,利用不充分。国家提倡全面终身学习,部分高校图书馆作为先行者,逐渐面向社会公众提供服务,实行总校区与分校区联动一体化服务。而以促进终身学习为使命的开放大学,由于其办学系统中各主体的原办学性质、办学层次、办学规模有所不同,各自拥有的文献资源差异较大。以广州开放大学为例,校本部图书馆的信息化服务较好,而分校图书馆、教学点图书室的文献资源规模、信息化服务却参差不齐,文献资源所发挥的作用有限。
其次,服务传统化,服务不全面。以广州开放大学为例,为助力学习型社会建设,图书馆的馆藏资源从主要围绕开放教育的学科专业、教学科研而建设,逐步向学历教育与非学历教育并重的方向发展,数字化资源建设占比逐步提高。但高校图书馆的馆藏资源主要为校内师生服务,即便一些高校图书馆面向社会开放,但服务的对象、地点、类别等特定性因素都使得社会服务率偏低[1]。传统服务难以满足开放大学学习者的需求。实现跨区、跨校的就近借阅服务以及数字资源的共建共享,才能满足学习者的需求,促进学习型社会的发展。
针对上述问题,笔者以广州开放大学为例,利用网络爬虫技术快速建立文献资源信息库,提供一套可突破数据信息壁垒、在办学系统内实现文献资源汇聚并提供智能服务的应用方案。本系统重点实现对开放系统的文献资源采集,通过建立知识库,实现办学系统内文献资源与知识库的比对,综合分析知识热点、位置信息、文献形式、排行数据等维度,通过微信小程序为读者提供智能荐选服务。因此,系统应用应满足以下需求:
(一)校本部实现全量文献数据采集,实现爬取包括图书管理系统、在线图书信息查询系统、教职工论文等文献信息系统,实现导入结构化文献数据信息;
分校数据爬取方式类似。
(二)根据文献热点信息、图书借阅信息、图书采购清单、研究热点分析、学校官网信息,通过网络爬虫获取文献热点数据,建立文献资源热点标签,通过热点文献分析、图书借阅需求分析、数字文献阅读数据分析、学校发展规划词频分析等技术,实现图书文献的推送荐选。
(三)利用微信小程序庞大的用户群体优势,能直接获取终身教育学习者的有效数据,能快速有效获取读者需求,文献荐选能满足开放大学教师、科研人员、终身教育学习者等的图书需求[2]。
网络爬虫可以按照一定的规则自动抓取程序或脚本的数据,可以实现快速建设图书信息资源库。以广州开放大学为例,具体分为五个步骤:第一,确定目标相关网站,从网络上获取有价值的网页内容,如馆藏查询(内网)、知网搜索、读秀搜索、历届试题、国开图书馆、学校官方网站等系统;
第二,分析网页内容,提取有用数据并存储到新建数据表;
第三,建立标签库,将管理对象进行标签化管理;
第四,统计数据或运用人工智能算法进一步分析数据;
第五,自动匹配并检查图书或文献信息来源的可用性,生成链接后智能化推送图书,根据用户操作数据形成新的实时消息数据。运行模式如图1所示。
图1 图书荐选运行模式图
根据网络爬虫的技术特性,可以进一步构建基于大数据的智慧图书馆信息化系统,实现跨平台、跨系统的多源数据采集,包括图书、报纸、期刊、新闻及其电子出版物等各类文献。通过开放大学的办学体系,建立图书信息资源共建共享机制,可提供智能图书查询、图书智能荐选、智慧图书馆信息可视化等应用,技术框架图如图2所示。
图2 技术框架图
Python是一种跨平台的计算机编程语言,可用于编写网络爬虫程序。网络爬虫又被称为网络蜘蛛或网络机器人,可以自动采集互联网信息的程序或脚本。Python抓取技术分为两个环节:数据爬取和数据解析。
(一)urllib库的使用
数据的爬取由python内置的模块urllib进行,可以处理http网络协议。urllib是早期Python使用的版本,笔者使用Python3.8.1,下载urllib3并以pip命令进行安装。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( );
参数fields是相当于填好的网页的表单form内容,参数headers可以定义http请求的头部,多数用作仿真浏览器。
(二)BeautifulSoup库的使用
BeautifulSoup是可以从HTML或XML中提取有用的数据,以pip命令安装BeautifulSoup4。以下是取得具有链接的内容的代码:
parser="html.parser"
for tag in soup.find_all("a"):...
(三)统一编码
由于提取数据以中文为主,网站的编码通常是utf-8,而Python3以上版本的默认编码是unicode,在处理中文字符串时,往往不能直接比较,要先进行统一编码:
tag.text.strip( ).encode("cp936")=="借阅".encode("cp936")
(四)socket模块的使用
程序使用Python内置的socket模块进行数据传输。socket使用TCP编程,其中server部分(位于代理程序)的相关代码如下:
s=socket.socket(socket.AF_INET,socket.
SOCK_STREAM)
s.bind((host,port))
工作室制度最大的特点就是与教学内容相挂钩,可以说是工作室生命力的体现,教学方法和教学的可操作性是教学内容完美体现的关键之处,职业能力的完美与否在于所培养的人才是否具备这种专业,跨行业的优秀能力。因为项目在实行的过程中免不了回经受来自外界,来自社会的考验,所以教师不仅要有优秀的专业能力,还要有跨行业的能力,这也促使工作室实施教学内容是要把职业关键能力和素质培养作为重点,并在考核中进行检验。
s.listen(2)
conn,addr=s.accept( )print("Connected")
res= conn.recv(1024)if res[0]==0x68:
conn.sendall(reply)client程序(位于服务器)关键代码如下:
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模块的使用
程序因为要同时处理几个网络请求,使用多线程编程。使用了内置的threading模块,主要代码如下:
import threading
t1=threading.Thread(target=download,name="in tenetrec",args=(1,))
t1.start( )
同时也少量使用了线程同步锁,直接使用threading.Lock/Rlock( )。
多数据源的数据采集涉及多种平台,如图书查询系统、历届试题查询系统、学校官网、中国知网、维普网、百度学术等,多种异构平台之间的相互切换、数据采集和数据展示是实现系统的基础功能,数据采集是整个系统的核心[4]。网络爬虫按照系统结构和实现技术可以分为:通用型、聚焦性、增量型和深层网络爬虫,针对不同的系统设计不同的网络爬虫。
(一)智能图书信息资源建设技术框架设计
以广州开放大学为例,校本部数字图书馆只能在内部网络查询,数据采集要在内网设置代理或内网直接爬取采集,而分校的图书信息共享需要在办学制度中形成机制,才能实现共建共享。
代理程序通过广度优先遍历策略页面收集图书数据,以合法的方式实时传递给云服务器,如图3所示,最终更新云服务器数据。云服务器通过微信小程序对外提供图书查询服务。用户输入查询的书目,云服务器从本地数据库中查询书籍信息和书籍所在图书馆等数据,实时库存信息则是在使用者选择了图书馆后再发出指令让该图书馆的代理程序搜索送回来。
图3 代理程序采集数据
云服务与代理程序的运行模式如图4所示。
图4 代理程序采集数据运行模式
(二)图书信息资源的数据特点
云服务器提供数据存储和查询的作用,代理程序可以根据实际情况决定是实时采集还是定时采集定期更新数据到云服务器。针对每个代理端,就图书而言,需要设定的参数一般包括:电子图书馆搜索页面的URL、搜索页面表单提交数据的方式GET/POST、搜索页面表单的参数,尤其是翻页的参数名。图书的书目往往按照“中图分类法”进行分类,分为5大部分,22个基本大类。5个部分包括马列主义、毛泽东思想,哲学,社会科学,自然科学,综合性图书等五大部类。部类下再进行更细化的分类,比如:TM电工技术,TN电子技术、通信技术,TP自动化技术、计算机技术,TQ化学工业。我们使用第二级分类进行搜索,搜集数据。但这种搜索也会产生一些数据重复,比如,搜索F1可能是“世界各国经济概况、经济史、经济地理”类别,也可能是含有F1赛车的书名。
对于收集到的图书数据,有相关关键字,这些关键字对不同的图书馆有很多同义词,采集的时候需要考虑清洗后数据规划的问题,如表1所示。
表1 同义词问题
图书馆信息资源建设的数量和质量是图书馆建设实力的重要体现,影响着图书馆信息服务的水平和形象。图书馆信息资源建设包括图书资源建设、文献资源建设、数据库建设、网络信息资源建设等。
(一)基于网络爬虫的功能设计
1.代理程序的信息存储
不同的信息资源所在的网络环境可能不同,内网系统需要设计代理端爬取数据。服务器端需要存储代理程序基本信息、配置信息和同步信息,代理端采集器信息如图5所示。
图5 代理端存储的信息
2.代理程序的采集线程设计
代理程序作为采集器,可设计多个线程,本案例中以图书信息资源为例,设计了一个库存线程,如图6所示,负责接收服务器的命令查询图书的实时库存量;
设计了另一个定时同步线程,如图7所示,负责按约定采集时间、传输图书信息到服务器。
图6 图书查库存线程流程
图7 图书库存同步线程流程
3.服务器功能设计
云服务器负责将多源数据采集后进行汇聚、清洗、存储和计算,通过建立不同主题的数仓,为应用程序提供数据支撑服务。云服务器连接代理服务程序的服务端除了接收各个代理程序同步过来的图书信息,还可以发出实时查询命令以及提供查询、维护界面的功能。同时服务器为微信端智慧图书馆信息资源小程序提供应用功能。
4.数据安全技术设计
具备秒级准实时数据接入能力,保证数据的安全性、一致性和准确性。数据传输过程中对敏感信息采用压缩和加密,设计采集和连接的审计管理功能,详细记录采集、连接、操作等信息,并且这些记录都是只读的,不得修改和删除,为安全性审计提供保障。
(二)基于网络爬虫的图书信息资源建设
以广州开放大学为例,为了获取图书信息资源,需要通过全库数据查询界面。首先在广州开放大学数字图书馆网站的查询检索界面进入全库图书查询界面,根据不同的图书分类遍历网站上所有图书链接信息,全量采集图书馆藏书的图书数据,新建图书数据表,存储图书的信息包括书名、作者、图书编号、类别、出版社、简介、金额、所在地、ISBN号、库存量、图片等。然后根据ISBN号在当当网、京东网、出版社官网采集图书商品链接获取图书简介、价格、评价等有用数据,从而存储和分析获得的比价数据、热度数据等,实现荐选图书。
(三)基于网络爬虫的文献信息资源建设
为了获取文献信息资源,以广州开放大学为例,内部文献的历届题库查询系统类似图书信息资源建设的方式,外部文献的实施过程与细节,需要向查询引擎自动提交关键字并获取查询结构。根据校内教职工的基础数据,首先可以在中国知网,输入姓名及合并检索“广州市广播电视大学”或“广州开放大学”的关键字,网站将查询转换为链接,通过requests库的get( )函数,将链接中的关键词作为参数,自动提交查询;
然后提取有用数据存储,从而存储和分析获得的下载量、引用量、文章关键词热度等,实现为学术速递、热点研究等进行文献推荐。
本文积极探索图书馆信息资源系统的建设,智慧图书馆信息资源系统处于开发应用初期阶段,技术上实现了校本部图书信息资源的采集并完成微信小程序快速检索文献的全过程开发,为开放大学智慧图书馆的信息资源建设提供了有力的支撑。开放大学的大规模体系化办学是本文技术应用的基础,网络爬虫技术为建设基于大数据的智慧图书平台提供了可参考的技术框架,但由于多源数据采集是系统设计的关键,如何突破各种系统壁垒仍需要进一步研究。