APP下载

CALIS馆际互借系统文献预处理程序设计

2015-05-12朱玉强山东师范大学图书馆山东济南250014

图书馆学刊 2015年1期
关键词:本馆跨域网页

朱玉强(山东师范大学图书馆,山东济南250014)



CALIS馆际互借系统文献预处理程序设计

朱玉强
(山东师范大学图书馆,山东济南250014)

[摘要]针对馆际互借员需要对用户向CALIS系统提交的文献请求进行大量重复性预处理操作的现状,设计并实现基于网页文档对象的辅助程序,全自动检索、获取并向用户推送免费资源,执行“本馆运送”操作,以提升馆际互借员操作体验,有效节省图书馆经费。

[关键词]CALIS馆际互借网页文档对象跨域访问

[分类号]TP393

1 引言

CALIS管理中心于2004年6月21日启动“馆际互借/文献传递服务网”,开展返还式“馆际互借”及非返还式“文献传递”服务[1]。以山东师范大学图书馆为例,除CALIS提供馆际互借补贴外,该馆还通过图书馆经费向读者追加补贴,用户几乎全免费获取非返还式电子全文。读者通过CALIS免费获取文献后,往往不愿再去检索本地馆藏,有需求时直接向CALIS系统提交。为节省本馆经费,馆际互借员有必要对读者申请预先处理,对本地有馆藏或可通过免费途径得到的文献,直接执行“本馆运送”操作。笔者通过CALIS馆际互借官方QQ群调研,上述现象普通存在。故此通过操作网页文档对象等途径编制程序,全自动预处理馆际互借请求,可有效节省图书馆经费,提升馆际互借员操作体验。

2需求及技术思路

CALIS馆际互借系统依托网页实现功能,故程序围绕对网页元素的自动操作展开。温晓明[2]使用Python语言,通过向图书馆OPAC服务器提交POST请求的方式模拟人工操作网页,检测图书馆电子资源可用性;胡卫等[3]编制软件,向HTTP服务器发送POST请求,取回服务器响应后的网页源文件,模拟人工搜索、下载地震相关资料;张金等[4]为解决网页表单数据重复填写等问题,通过分析Web页面结构,提出一种Web元素智能识别方法,实现自动化操作;陈江勇等[5]使用测试工具Selenium提供的API对Web界面元素所持有事件进行封装,达到自动操作网页元素、对Web应用程序进行自动测试的目的;任昌[6]介绍了综合运用DOM树路径、DOM压缩树路径以及参考点等方式进行网页对象定位;张宗科[7]对于不能使用网络蜘蛛下载的网页,通过模拟按键等方式模拟人工打开、保存、关闭网页系列操作,减轻人工重复劳动;杨延航等[8]介绍了使用ASP.NET实现向网页上传文件的方法。上述文献或囿于应用环境,均未涉及异域数据集成环境中(下简称“跨域”)对网页元素的操作。陈腊梅等[9]提出了使用XMLHTTP代理外加JSON技术解决AJAX跨域访问和展现数据的问题,解决方案相对复杂。CALIS馆际互借系统网页虽未采用复杂的框架及跨域元素,但难免被嵌套使用。笔者除利用微软提供的针对IE浏览器的二次开发接口操作网页元素外,还利用Win32 API函数实现了跨域网页元素的枚举和操作,总体工作流程如图1所示。

图1 总体工作流程

3关键方法与技术

3.1取网页文档对象、定位目标网页元素

程序工作于Internet Explorer或用户指定的IE内核浏览器。取浏览器句柄,筛选类名为“Internet Explorer_Server”(下简称“IES”)子句柄;操作IES,取网页文档对象;操作网页文档对象,实现模拟真人点击或填表等。算法描述如下:

输入:Internet Explorer或IE内核浏览器。

输出:可精确定位的目标网页元素。

Step1:运行浏览器,使用FindWindow或EnumWindows取顶级窗口句柄hwnd;使用FindWindowEx或EnumChild⁃Windows取hwnd中ClassName为“Internet Explorer_Server”的子句柄hwnd_IES。

Step2:取hwnd_IES网页文档对象。易语言中核心代码为:

①Message=RegisterWindowMessageA(“WM_HT⁃ML_GETOBJECT”);

②SendMessageTimeout(hwnd_IES,Message,0,0,2,1000,ResourceNO);

③ObjectFromLresult(ResourceNO,{ 32,197,111,98,30,164,207,17,167,49,0,160,201,8,38,55 },0,网页文档对象)。

Step3:取网页文档对象中具体元素并操作。以“CALIS山东省文献信息服务中心”馆际互借员登录界面[10]为例,“账号”文本框源码为“”,自动填写用户名“zhuyq”可用以下代码:

元素=网页文档对象.对象型方法(“getElementBy⁃Id”,“userid”)

元素.写属性(“value”,“zhuyq”)

如元素无“id”和“name”,可使用“getElementsByTag⁃Name”取同类Tag元素集合,再据元素特殊属性如矩形大小、坐标等筛选。如网页含框架,还需搜索框架。对于跨域框架,如类似“”则相对复杂,可调用IServiceProvider接口实现网页元素的定位和操作[11],算法如图2所示。

图2 跨域框架操作

3.2格式化用户提交的文献请求

自动登录后,取“新收到读者申请”列表,逐一跳转列表各链接,在“事务信息”详情页,提取用户邮箱、文献类型、出版物名称、文章题目等信息,进而决定后续自动操作方法及目标,流程如图3所示。

图3 格式化用户提交的文献请求

3.3自动检索馆藏资源并下载

结合山东师范大学图书馆实际,对用户提交请求,纸本资料以检索馆藏OPAC为主;电子资源以检索“读秀”为主;另据语种、学科分类,选相关专题数据库做辅助检索。如OPAC显示馆藏有纸本资源,采集网页源码,使用正则表达式筛选馆藏地及索取号信息,供后续推送结果;如馆藏有电子资源,自动下载全文,供后续推送。算法上,除操作网页文档对象,同时调用HTTP下载协议以及诸如SendMessage、PostMessage等Windows API。笔者就此曾专门撰文[12],另外自动检索驻济协作馆联合目录、各馆资源发现系统亦与此类似,不再赘述。

3.4自动检索互联网免费资源并下载

互联网资源浩如烟海,结合本校用户文献请求范围及笔者工作实践,划定www.socolar.com、百度文库、Google学术搜索、新浪爱问、道客巴巴作为互联网免费资源检索范围。此类资源站中,有些检索到全文可直接下载;有些需登录,甚至要求账号达到一定积分值方可下载。对前者,采用3.3所述方法即可;对后者,笔者针对不同网站特点制作了账号自动申请、自动分享软件,采用ADSL断网重连自动换IP的方法规避验证码限制,借以获取积分,提升账号下载流量。

3.5自动推送结果并自动结算

综合各自动操作结果,核查最终有否纸本或电子资料可提供给用户。如有,利用SMTP协议向3.2中采集的用户邮箱发送邮件,推送纸本资源馆藏地、索取号或电子文档全文,之后可自动执行“本馆运送”操作;如没有则记录,供后续转人工操作。

图4  CALIS“本馆运送”操作界面

CALIS馆际互借系统执行“本馆运送”共4个步骤:①单击图4所示下拉框“本馆运送”项;②在弹出窗口单击“提交”按钮;③单击弹出信息框确认按钮,执行提交;④关闭成功提示信息框,其中第1步相对复杂。通过网页SPY工具探知同一页面各下拉框“id”均为空,“name”均为“send”,可如下操作:

输入:含类似“