【PHP开源代码栏目提醒】:网学会员PHP开源代码为您提供基于JavaScript切片的AJAX框架网络爬虫技术研究 - 期刊论文参考,解决您在基于JavaScript切片的AJAX框架网络爬虫技术研究 - 期刊论文学习中工作中的难题,参考学习。
2009年第7期 计算机系统应用 基于J avaS c r i pt切片的AJAX框架网络 爬虫技术研究① Web Crawler Technology of AJAX Frame Based on JavaScript Slicing 曾伟辉1,2李淼l (1.中国科学院合肥智能机械研究所安微合肥230031: 2.中国科学技术大学信息科学技术学院自动化系安微合肥230027)摘要: 自Jesse James Garrett提出了~AX概念以来,由于~AX在提升用户交互体验的同时,又不需要 在客户端安装插件。
因此,一经提出就引起了互联网领域的广泛关注。
但目前的网络爬虫技术在~AX 框架的URL解析过程中存在着不能够识别事件触发顺序等问题。
导致大量数据不能被搜索引擎有效检 索。
本文针对此问题,通过研究基于对象的程序切片算法。
以及脚本执行引擎与切片模块的互操作, 最终解决~AX框架中URL提取以及异步JavaScript网络爬虫系统的关键技术问题。
关键词:JavaScript程序切片网络爬虫有限状态机AIAX1 引言 程序切片(Program slicing)P,P影响变量V在程 A,IAX〔U是2005年Jesse James Garrett在一篇 序P中某一点状态的所有语句和断言的集合。
程序切名为<Ajax:A New Approach to Web Applica— 片实际上是得到了程序P的一个有效子集,而省略了tions>的文章中定义的一种客户端技术,它建立在 其他不相关
代码,降低了
代码执行的时间和空间复杂JavaScript和XML基础上,真正实现了RIA(Rich 度。
程序切片技术【4,5l从1 979年Mark Weiser提出Internet Applications,丰富互联网应用程序),克服 以来在国内外已引起了人们的关注,目前已经有了许了其它RIA技术需要在客户端安装插件才能够实现动 多切片工具。
国外的研究有支持C语言的Wisconsin态交互的弱点。
同时,~AX极大地提高了用户的交互 程序切片工具version 1.1、Chopshop、Ghinsu,体验。
因此,NAX一经提出,就被网站开发人员大规 Menagerie。
有支持ANSlC的Unravel,The模采用,各种AJAX框架如GWT,Atlas,Dojo也应 Oberon Slicing TooI(oSD,支持Java语言的运而生。
但~AX站点中包含大量Javascript
代码, Indus;基于Oberon语言的The Linz Oberon对于RIA中JavaScript脚本的处理,国内外的研究是 Slicing System,以及Microsoft’s slicing tool、采用标准浏览器API自动构建迷你浏览器替代web浏 Spyder、PSS/Ada系统等等。
国内研究比较多的是南览器(如IE)处理脚本执行
代码【2】。
中国科学院计算技术 京大学、东南大学等,他们组成的程序切片研究小组研究所在Mozilla
开源的JavaScript引擎 开发的基于分层切片模型的面向Java程序切片工具,SpiderMonkey下,通过构造浏览器内置对象的方法 目前已经用于OOPQL语言环境中提供相关程序的切提取动态网页的URL〔31,但这些方法都只能够处理 片查询服务。
然而JavaScript语言的程序切片工具目JavaScript脚本中URL字符串常量,而对于需要按照 前尚未成熟,因此本文对JavaScript这类基于对象语特定的顺序触发事件才能得出完整URL变量的情况无 言的切片技术进行了研究,并深入探讨了JavaScript法处理。
切片技术在网络爬虫中技术的应用。
①基金项目:中国科学院知识创新工程重要方向项目(KGC×2一SW一51 1) 收稿时间:2008—1 0—2 7 Applied Technique应用技术169 万 方数据 计算机系统应用 2009年第7期 2程序切片技术描述 态的增加或者删除任何对象的属性。
如果为一组对象 程序切片【6】是根据控制流和数据流分析而引进的 的原型对象增加一个属性的话,那么所有继承于这个 一种程序理解技术,是一种程序分析和逆向工程技术, 原型对象的所有对象都可获取这个新增加的属性。
它通过寻找程序内部的相关性来分解 JavaScript没有Java等面向对象语言所具有的静 程序,再通过对所得程序切片的分析达到对整个 态类型,也没有严格的类型检查机制。
但JavaScript 程序的分析和理解。
满足以下两个条件的程序切片被 支持大部分的Java语言的语法和控制流结构。
Java 称为Mark Weiser程序切片:【1)一个程序切片对应一 等面向对象语言的类是通过声明来创建并在编译阶段 个特定的切片准贝IJ((slicing criterion)(v。
j),其中V 就固定好了的,而JavaScript支持基于以下几个基本 表示在i定义或者使用的变量集合,i是程序中的某个 数据类型的运行时类系统:数字类型,布尔类型和字 程序点(一般而言是指某条语句):(2)程序P的切片S 符串类型。
可通过从P中删除0条或者多条语句得到,但要保证 程序P和切片S关于切片准则(V,i)具有相同的行为 4 Aja×框架网络爬虫系统实现 定义。
Ajax框架网络爬虫系统主要包括规则集提取模 从一个程序行为的子集开始,把程序简化为一个 块、网络爬虫模块、程序切片模块、脚本执行模块, 较小的但是仍然具有原始行的形式,减小以后的程序 其工作原理图如图1所示。
以下主要介绍程序切片与 就称为切片,是一个独立的程序,在指定的行为子集 脚本执行模块。
中等价于原始程序。
Weiser所定义的切片包含了程序 中所有的可能影响i点V的变量值的程序语句。
也就 是说,一个程序切片包含了程序中所有可能影响在些程序点上我们感兴趣的变量值自勺程序语句。
目前程序切片主要针对面向过程和面向对象语言,而对于基于对象的语言如JavaScript,还没有成熟的切片工具出现。
目前切片算法主要有Weiser的基于数据流方程的算法17J,K.7.Ottenstein和LM.Ottenstein以及HorwitZ的基于程序依赖图的图形可达性算法f8J,基于波动图的算法【91等。
3 JavaScript语言概述 Javascript是一种基于对象的编程语言,不同于其它面向对象的语言,它没有类的概念,只有对象。
JavaScript语言的对象有三个来源:Javascript内部对象、主机环境中对象、程序创建的对象。
任何对象都可以作为原型对象与另一个对象联系 图I AJAX框架爬虫系统工作原理图起来,允许后一个对象来共享前一个对象的所有属性。
JavaScript提供动态继承,继承可以根据单个对象的不 4.1 JavaScript切片算法实现同而不同。
而且还支持不需要任何声明的函数,函数可 根据JavaScript自身的特点建立JavaScript语言以是对象的属性,作为宽松类型的方法被调用执行。
的分层切片模型,采用对传统的系统依赖图进行基于 任一个对象都可以定义自己的属性,不管是在创 对象扩充的方案进行JavaScript脚本切片,以获得建阶段还是在运行阶段。
JavaScript在运行时可以动 URL相关的程序片段。
将基于对象的程序切片计算分1 70应用技术Applied Technique 万 方数据 2009年第7期 计算机系统应用 成三部分: 4.2 JavaScript切片模块,爬虫模块,脚本执行模 (1)构建出JavaScript程序的依赖关系 块之间的互操作协议研究 通过对JavaScript源程序进行基于扫描的语法 研究三种模块之间的互操作协议,以实现三者之 分析,找出所有的对象、变量、方法的定义:按照逻 间的数据传递,状态控制等。
同时保持了模块最大限 辑结构将JavaScri pt分为对象层、方法层和语句层, 度的独立,且能互相协作,提高了模块的高内聚性和 逐层抽取程序语句间的数据依赖和控制依赖关系。
通 模块间的低耦合性,降低了程序的复杂度。
过对JavaScript源程序中赋值语句的左值右值,控制 (1)构建JavaScript切片的有限状态机 语句的谓词,函数调用语句对实参和全局变量的影响 通过切片后得到的JavaScript
代码来构造有限状 以及对象继承时的多态进行语义分析:针对 态机的状态表,以表示所有情况下响应每个事件所需 JavaScript中动态定义对象的模式,实现对象中数据、 的操作以及状态变量,为状态间的事件和转移组织动’方法的统一封装处理。
作。
j哿JavaScript函数存储于关联数组中,将状态表 (2)基于对象的系统依赖图构造方法研究 实现为一个二维的函数关联数组,使用状态名称和事 根据数据依赖和控制依赖关系构造出由对象层次 件名称作为索引。
利用JavaScript中关联数组是对象 子图(OHG)、控制依赖子图(CDG)、数据依赖子图 的特性,使用对象语法定义状态表,将状态表直接转 (DDG)--个基本层次组成的基于对象的系统依赖图 换成
代码。
(BOSDG)。
OHG描述了基本对象的结构信息和对象层 (2)程序切片模块、脚本执行模块之间的互操作 次信息,其中的顶点包括每个对象的对象首部顶点、 启动事件侦听端口,用多线程消息队列存储事件, 定义在每个对象中的每个方法的方法首部顶点:边包 对于状态表中事件条件动作、事件动作、事件条件、条 括每个对象得对象首部顶点到与其有继承关系的对象 件动作、条件、动作的转换,程序切片模块判断转换条 的相应对象首部顶点的继承边,由方法首部表示的方 件、动作,条件满足时,脚本执行模块执行状态表中的 法节点到定义该方法的对象的对象首部顶点的类成员 操作,返回下一个状态,并保留状态上下文。
动态跟踪 边。
当一个对象和另一个对象或者系统结合时,通过 程序执行过程,截获所需的中间结果以及最终结果。
对象首部节点和对象成员边就能够方便的访问方法的 (3)程序切片模块,爬虫模块,脚本执行模块之 信息。
同时图中子对象没有重新表示从超对象中CDG 间的互操作 中描述了函数方法的具体语句实现过程,采用继承的 动态跟踪程序执行过程,将最终结果返回给爬虫 方法,因此消除了对继承方法的重复表示。
用静态后 模块处理。
爬虫模块继续利用URL参数构建切片准则, 向切片的方法,包含了方法的多态性表示等。
DDG中 调用程序切片模块得到该参数的
代码片断,返回给脚 包括了对象的实现,消息动态绑定到对象中的特定方 本执行模块,反复执行上述操作,直至URL完整构造 法表示,对象间的数据依赖关系等。
出来。
其中JavaScript脚本的解释处理大体可分为五 (3)URL相关的程序片段切分与计算方法 大模块:JavaScript编译模块,JavaScript字节码解 利用两阶段图形可达性算法逆向遍历BOSDG(基 释执行模块,atom管理模块,垃圾收集模块以及标 于对象的系统依赖图)。
首先(1)在BOSDG上找出从节 准类管理模块。
其体系结构和工作原理可参考 点n出发,沿(正向或逆向)数据依赖边或者控制依赖 NetScape公司开发的JavaScript解释器引擎 边可以到达的节点进行标记,构成程序关于节点n(语 SpiderMonkey。
句n)的程序切片。
(2)标记在BOSDG中与n相连的节 点,然后标记跟这些节点相连的节点,依次计算到不 5结束语 能找到新的节点为止。
通过上述遍历过程中的节点标 本文针对AJAX框架中大量数据不能被有效检索 记,计算出URL相关的程序片段。
(下转第1 37页) Applied Technique应用技术171 万 方数据 2009年第7期 计算机系统应用制,并建立了相应的形式化模型;另一方面,本体的 and Access Control in Enterprise Information Platfonn.使用将传统的访问控制对象扩展为带参数的、参数论 EDCIS.2002:1 80一192.域通过领域本体呈现出结构性关联(偏序结构)的、并且 3王杰生,李舟军,李梦君.用描述逻辑进行语义Web服具有业务语义的服务。
这样,扩大了访问控制的对象 务组合.软件学报,2008,19(4):967—980.范围,丰富了相应的访问控制机制。
4张东伟,赵津津,李鹏.基于语义网的知识管理研究. 本文主要给出了一种基于本体的权限管理模型, 计算机与信息技术,2008,(3):22—25.并对这种广义的权限管理模型通过OWL进行了简要 5都婧,封化民,何文才,孙茂增.基于Ontology的Web描述;运用该模型,通过OWL本体描述语言,用户可 内容安全分析检测框架.西华大学学报(自然科学版),以构建自己领域内与权限相关信息的本体,从而利用 2008,27(2):23—26.该本体进行企业应用级的权限管理。
总的来说,该模 6王文璞。
林木辉.基于本体的领域知识库构建方法研型虽然较传统的控制模型有了许多进步,但仍存在着 究.福建电脑,2008,(8):13l一132.许多值得研究的问题,例如:我们可以利用SWRL 7文坤梅,卢正鼎,吴杰文,李瑞轩,孙小林.基于描述逻(Semantic Web Rule Language)来描述我们所研究 辑的推理系统设计与实现.小型微型计算机系统,领域中的不同个体对象,从而简化访问控制模型的实 2008,29(1):57—60.现工作,这些工作都将在以后的实践中进行考虑解决。
8文坤梅,卢正鼎,孙小林,李瑞轩.语义搜索研究综述. 计算机科学,2008,35(5):l一4. 参考文献 9何文才,都婧,封化民,孙茂增,张琼.基于Ontology的1 Woo T,Lam S.Authorizations in Distributed Systems: Web内容安全研究。
网络安全技术与应用,2008, A New Approach。
Journal of Computer Security,1 993, (4):53—55. 2(2&3):107—136. 10王桢。
程晟,程传业.基于OWL的电厂设备故障特征2 Li DD,Hu SL,Bai S.A UnifoITn Model for Authorization 的知识表示.电脑与电信,2008,(7):19—21。
(上接第1 71页)的问题,研究了基于对象的程序切片算法,构建程序 4张勇翔,李必信,郑国梁.程序切片技术的研究与应用. 计算机科学,2000,27(1):3 l一35.层次模型,解决了URL关联信息提取问题;研究了脚本执行引擎与切片模块的互操作协议,构造状态控制 5 Steindl C.Program slicing for object-oriented program-引擎,解决了切片
代码的有序执行问题。
从而最终解 mming languages【PhD Thesis〕.Johannes Kepler决了AJAX框架中URL提取以及网络爬虫系统实现的 University Linz.1 999.关键技术问题。
6陆波.程序切片技术在程序理解中的应用研究【硕士 学位
论文】.济南:山东大学,2004. . 参考文献 7 Weiser M.Program slicing.IEEE Transactions onl Jesse James Garrett.Ajax:A New Approach to Web Software Engineering,July 1 984. Applications.http://www.adaptivepath.com/ideas/essay 8 Ottenstein KJ,Ottenstei LM.The program dependence s/archives/000385.
php2005. graph in a softwaredevelopment environment.Proce·2 Alvarez M,Pan A,Raposo J,Vina A.Client-Side Deep the ACM SIGSOFT/SIGP LAN software edings of Web Data Extraction ext ended papeg http://www.tic. Engineering Sysposium on Practical Software udc.es/-mad/publications/csdeepweb_extended.pdf. Development Environments,ACM SIGPLAN Notices.3王映,于满泉,李盛韬,王斌,余智华.JavaScript引擎在 1984,19(5). 动态网页采集技术中的应用.计算机应用,2004,24 9董志宏.面向对象程序的波动分析及其在程序切片 (2):33—36. 中的应用【硕士学位
论文】.南京:南京大学,2001. Applied Technique应用技术137 万 方数据基于JavaScript切片的AJAX框架网络爬虫技术研究作者: 曾伟辉, 李淼作者单位: 曾伟辉中国科学院合肥智能机械研究所安微合肥230031中国科学技术大学信息科学技 术学院自动化系安微合肥230027, 李淼中国科学院合肥智能机械研究所安微合肥 230031刊名: 计算机系统应用英文刊名: COMPUTER SYSTEMS amp APPLICATIONS年,卷期: 2009187参考文献9条1.陆波 程序切片技术在程序理解中的应用研究学位
论文 20042.Steindl C Program slicing for object-oriented programmming languages 19993.张勇翔李必信郑国梁 程序切片技术的研究与应用期刊
论文-计算机科学 2000014.董志宏 面向对象程序的波动分析及其在程序切片中的应用学位
论文 20015.Ottenstein K JOttenstei LM The program dependence graph in a softwaredevelopment environment 19846.Weiser M Program slicing外文期刊 19847.王映于满泉李盛韬王斌 余智华 JavaScript引擎在动态网页采集技术中的应用期刊
论文-计算机应用2004028.Alvarez MPan ARaposo JVina A Client-Side Deep Web Data Extraction ext ended paper9.Jesse James Garrett Ajax:A New Approach to Web Applications 2005本文链接:http://d.g.wanfangdata.com.cn/Periodical_jsjxtyy200907041.aspx.