CALIS馆际互借系统文献预处理程序设计 https://www.chnlib.com https://www.chnlib.com/LunWen/2017-02-02/93506.html 朱玉强 (山东师范大学图书馆,山东济南250014) [摘要]针对馆际互借员需要对用户向CALIS系统提交的文献请求进行大量重复性预处理操作的现状,设计并实现基于网页文档对象的辅助程序,全自动检索、获取并向用户推送免费资源,执行“本馆运送”操作,以提升馆际互借员操作体验,有效节省图书馆经费。 [关键词]CALIS 馆际互借网页文档对象跨域访问 [分类号]TP393 1 引言 CALIS管理中心于2004年6月21日启动“馆际互借/文献传递服务网”,开展返还式“馆际互借”

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


  • 时间:2017-02-05 06:22:27
  • 来源:本站发布
  • 作者:朱玉强

朱玉强

(山东师范大学图书馆,山东济南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所示。

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_HTML_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]为例,“账号”文本框源码为“<INPUT style=“WIDTH:180px; COLOR:#999”id=userid name=userid value=图书卡号/校园卡号/用户名>”,自动填写用户名“zhuyq”可用以下代码:

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

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

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

回到顶部