论文研究-一种基于状态转换图的Ajax爬行算法.pdf

-
传统Web爬虫无法解决爬行Ajax应用所面临的JavaScript执行、状态识别与切换、重复状态检测等问题。为此,首先定义Ajax应用的状态转换图,并设计了一种基于状态转换图的Ajax爬行算法,通过该算法可以获取Ajax应用状态信息和后台Deep Web资源。为了提高Ajax爬行的准确性、减少待爬行的状态数目,使用Ajax指纹识别、DOM结构过滤等方法改进上述算法。实验结果表明了算法的有效性和性能。
4268 计算机应用研究 入缓存。当触发一个节点事件并进入新的状态后,需要回退到 2 aph, queue, Ic); 之前状态以触发其他节点事件时,即可通过从缓存中取值来撤 3 page ie FetchPage(url) 销DOM的变化。因算法使用广度优先策略进行遍历,极大地 4 events=Regex. Match( page, eventPattern 提高了缓存的利用率,节约了所需的缓存空间。 5 root State State( ie DOM, depth) 6 queue. En Queue( rootState 3对Aax爬行算法的改进 7 while queue. IsEmuply() du 8 slae queue DeQueue(): ie. LvadSlale( state ); 基于状态转换图的Aj爬行算法可以建模AjHx应用的状 9 if state. depth > MAXDEPTH return; 态,生成与jx应用的状态转换图,并获取指向后台 Deep Web Nodes= Regex. Match( ie DOM, jsPattern ) 资源的链接。但算法没有考虑不同的Aja开发技术的区别, 11 foreach node N 可能造成状态丟失;算法识别新状态时直接比较完整的DOM ie. TriggerEvent( node 这将产生很多不必要的状态,甚至造成状态爆炸。为了提高算 if node event. HasXHRCall() then 法爬行Aax应用的有效性和性能,使用Aiax指纹识别、DM GetDeep WebResource(); WaitforRe esponse 结构过滤等方法对Ajax爬行算法进行改进。 if IsD iff state. DOM, ie DOM)then 3.1Ajax指纹识别 16 if graph HasD OM(ie DOM)then Ax技术实现异步操作的关键是XHR对象。该对象用于 newstate= State( ie DOM, +-depth graph. AddState( new etate); 向服务器端异步发送请求,并接收服务器端的响应以进行局部 queue. En Queue( newstate) 刷浙。除了直接使用XHR对象的Ajax开发技术外,还有很多 trans=Transition( state, newstate, node) 封装了XHR对象的第三方AjHx框架和库可以用来开发Ax aph. addTrans trans 应用2。第三方Ajax框架除了以属性的形式将事件绑定到 22 ie. LoadState( state DOM元素节点外,还可能头现框架相关的事件附加模式,爬行 23 4jx应用时首先识别其是否使用了某种第三方框架,将有利 算法首先进行初始化(第2行),建立空的状态转换图和于提高识别事件的准确率,并可有针对性地优化爬行过程。 待爬行状态队列,启动嵌入式浏览器。根据给定的URL获取 直接使用XHR对象开发Ajax应用时, Javascript代码既可 Ajax应用的初始面(第3行),利用正则表达式识别Ajax应以直接放在HmM页面中,也可以作为独立的Jsri文件, 用中的所有事件(第4行),并将当前DOM结构代表的初始状第三方的Ax框架则通常都是链接到独立的 JavaScript文件。 态加人待爬行状态队列(第5行),初始状态的深度设定为0。针对这种方式,首先收集第二方Ajax框架的指纹信息,如文件 算法的主体操作是对Aa应用的状态进行广度优先遍历名、文件大小、XHR对象封装函数等,构建了一个Ax框架知 (第722行)。从待爬行状态队列取出一个元素,将其载入浏识库,并基于该知识库设计了一个A指纹识别算法,如算法 览器作为当前状态(第8行),利用正则表达式提取所有附加2所示。 有事件的DOM元素节点(第9行)。 算法2 Ajax FingerPrinting(url) 依次对每一个节点触发绑定的事件(第12行)比较其触 发前后DOM是否一致,若不一致且状态转换图中无此DOM 2 page = ie FetchPage(url) 代表的状态(第1516行),则说明生成了新状态。将新状态和3pageMatch(xmlhttprequest)thenreturnXhr 转换加入状态转换图,将新状态加人待爬行状态队列(第1821 4 jsName Regex Match( page, jsPatten 5 js= ie FetchPage(jsName 如果触发的事件中产生了XHR调用,则抽取生成的指向 6 ajax.ih= DB. Match( js Name) 后台 Deep Web资源的链接,等待并接收服务器的响应(第13 if ajax Lih && js. Match( ajax L.ih. sign, then return ajaxlib 14行),然后同样执行上述新状态识别过程。 9 if ajax Lib= DB. Hash Match( js. hash)then 当前状态中的所有节点事件处理完后,判断待爬行状态队 return ajaxlib 列是否为空(第7行),若不为空且待爬行状态的深度尚未到 11ifjs.Match(xmlhttpRequest)then 达预设最大值(第9行),则重复上述遄历过程;否则算法结 return Xhr 東,状态转换图生成完毕。 13 return error. 为了生成状态转换图,需要在每一个状态中尝试触发所有 DOM节点上绑定的 Javascript事件,但事件触发后Ajnx应用通 算法首先通过Aax应用的URL状得初始HIML页面(第 常将进入一个新的状态。为∫能够在同一状态中依次触发所2行),然后判断页面是否包括XHR调用,若存在则认为没有 有事件,需要将Aja应用恢复到一个先前的状态,即实现状态使用第三方柜架(第3行),算法结束;否则从中解析出页面链 切换。 接的 Javascript文件名(第4行),获取对应的 Javascript文件 算法通过缓存状态信息实现A应用状态快速切换(第(第5行),并与从Aju框架知识库中读取的第-方框架的文 22行)。每次从待爬行状态队列中取出一个状态时,都将其加件名依次进行比较(第6行)。若匹配成功且 JavaScript文件中 第11期 郭浩,等:一种基于状态转换图的Aax爬行算法 4269 包含有该Aia框架的指纹信息,则认为使用了该Ajax框架到的服务器端资源链接数目作为评价标准;然后比较Ajix 第78行),算法结東 ( rawler与同类Ajax爬虫的性能,以爬行时间作为评价标准。 若上述匹配失败,则直接用 Javascript文件的hash值在其中作为对比的传统Web爬虫采用开源工具 Spider,同类 Ajx框架知识库中匹配,若匹配成功则说明该应用使用了第jax爬虫采用文献[6中提供的 Crawljax,以文献[6]中设计的 方Ajax框架,只是改变了文件名(第910行),算法结束。 单页面Ajax站点作为实验环境。 Ajax Crawler与 Crawljax的状 若上述兀配仍失败但 Javascript文件中有XHR调用代码,态最大深度均设定为5,线程数设为1; Spider的页面最大深 则认为是在独立的 JavaScript文件中使用基本的Ajax开发技设为5,工作线程数设为1。实验计算机配置为P42.66GHz 术(第1112行);否则不是Ajx应用(第13行),算法结束。 处理器,512MR内存, Windows XP sp3操作系统 Ajx指纹识别算法可以有效识别出Aiax应用是否使用了4.2实验结果及分析 某种第三方框架,且可以认别出被重命名的第三方框架。 实验结果如表1所示。 3.2DOM结构过滤 表1爬虫探测结昊对比 Ajax应用的状态变化最终都体现为DOM结构的变化,这 状态数/贝面数链接数时间/ms 1254 种变化可能由与用户交互的客户端事件引起,也可能由与服务 71361 器端交互的XIR调用引起。认别状态变化最简单的方法是育 A jax Crawle 10 47546 接比较DOM结构的hash值。由丁页而中可能存在计数器、数 从表1可以看出,由于 Spider仅能抽取静态超链接 字时钟等组件,受其影响页面内容可能在持续变化,此时采用 Ajax Crawler探测到的服务器端资源链接数目显著高于Cspi 比较hash值识别DOM状态变化的方法将产生状态爆炸问题。der,其差值即为 AjaxCrawler探测到的Ajmx应用后台 Deep Web 为了解决这个问题,可以将Ajx应用的状态变化定义为资源。由此可见,基于状态转换图的Ajax爬虫可以有效爬行 Web页面行为的变化,即DOM元素节点和事件的关联情况发Ajm应用。 Crawliax仅标志状态,未提供链接抽取功能,故无 生改变或生成「新的DOM兀素节点,而不关注节点文本的变法记录探测到的链接数。由于需要执行 JavaScript代码,Ajax 化或节点字体颜色等的变化。改进后的Ajx爬行算法使用 Crawler的性能不如 Spider,但由于减少了状态数目,性能仍 DOM结构过滤算法首先将页面中DOM元素节点的文本内容明显优于 Crawljax,可见通过改进具体的算法设计可以部分弥 和与页面展现相关的属性过滤掉,然后进行DOM结构比补执行 JavaScript代码带来的性能损耗。 较。DOM结构过滤算法如算法3所示。 算法3 DOMfitering(DOM) 5结束语 由于Aax技术具有近似于实时响应的交互性,极大地改 2 DOM. Remove( space Nodes) 善了用户体验,因而正逐渐成为Web开发的主流技术。但由 3 foreach node in DOM. nodes do 于爬行Aax应用将面临 javascript执行、状态认别与切换、重 4 if node. type Type. Text then 复状态检测等问题,导致传统基于静态超链接抽取的Wcb爬 5 DOM. Remove( node)i 虫无法爬行Ajx应用,Ajax应用及其后台的服务器资源成为 6 if node type = Type Attrib then 无法被搜索引擎索引的 Deep Web资源。本文提出了一种基 7 if Regex. Match( nore, prese Pattern )then DOM. Remove( node 于状态转换图的Ajx爬行算法并对算法进行了多种改进,经 9 rely DOM 实验验证,该算法可以有效地爬行Aa应用,识别Ajax应用的 后台 Deep Web资源,且算法性能较同类算法有显著提升。在 由丁浏览器将H.文档中的所有节点、文本和属性及初步解决状态爆炸间题后,Ajax电的性能瓶敛转换为与服 它们之间的空白字符均视做DOM节点,DOM过滤算法首先移务沿端的异步通信时延,今后将主要针对这个问题对算法进行 除DOM结构中的所有空白字符(第2行);对于其余的所有优化 DOM节点,判断其节点类型。若为文本节点,则移除(第4 参考文献: 行);若为属性节点且为宁体、颜色等属性,则移除(第68行) [1 GARRETT JJ. Ajax: a new apprcach to Web applications EB/OL I 若为元素节点则不处理。由于仅识别Web面行为的变化, (2005)[2008-10-08j.http://www.adaptivepath.com/publicatiane/ 改进后的Ajax爬行算法极大地减少了状态转换图中的状态数 essays/archives/000385 php A nols usage survey results[ ER/OL] 日,且对爬行到的后台 Deep Web资源数口没有影响。 (2007).[2008-10-09].http://ajaxian.com/archives/2007-ajax 4实验与结果分析 tools-usage-survey-results/ [3 SHAH S. Craw ling Ajax-driven Wch 2. 0 applications[ R]. 2007 4.1实验设计 [4] FREY G. Indexing Ajax Weh applications D]. Zurich: Swiss Federal Institute of Technology, 2007 为了验证本文算法的有效性并评价其性能,使用C#语言 [5 MATTER R. Ajax crawl: making Ajax applications searchable[ d] 开发了基于状态转换图的Aa爬虫系统 Ajax Crawler。其中调 Zurich: Swiss Federal InsLilule of Technology, 2008 用嵌入式浏览器的操作基于开源工具WaiN实现,并分别与传61 MESBAH A, BOZDAG E, van deursen a. Crawling ajax by infer 统Web爬虫和同类Ajax爬虫进行实验比较。实验首先比较 ring user interface state changes[ C]//Proc of the &th Internationa Ajax crawler与传统Web爬虫爬行A应用的有效性,以探测 Conference on Web Engineering. 2008: 122-134

-
2019-07-22
938B
DFA状态转换表具体例子的算法
2009-05-24DFA算法状态转换表的实现,此属于一个具体的例子
2.36MB
疯狂Ajax讲义(第3版) jQueryExt JSPrototypeDWR企业应用前端开发实战
2014-09-25详解前端应用开发中涉及的Ext JS/jQuery/XMLHttpRequest等技术,将Ajax融入轻量级Java EE开发,深入介绍Ajax+Java EE整合开发的方法和步骤,对实际开发具有极好
65.8MB
java源码包---java 源码 大量 实例
2013-04-18Applet钢琴模拟程序java源码 2个目标文件,提供基本的音乐编辑功能。编辑音乐软件的朋友,这款实例会对你有所帮助。 Calendar万年历 1个目标文件 EJB 模拟银行ATM流程及操作源代码
5.90MB
Java从零基础到精通详细笔记高清完整PDF版
2014-01-07本文档为详细笔记,doc格式,共173页。包含内容: Unix,Java 基础,数据库(Oracle jdbc Hibernate pl/sql),web,JSP,Struts,Ajax,Spring
9.36MB
Ajax教程
2007-04-18Ajax 教程
1.50MB
要想精通java必须看的经典书籍(强顶)
2008-08-04包括:Ajax快速上手,hibernat培训讲义,JavaScript源码大全,Spring+in+Action中文,Struts快速学习指南,全新java基础实践教程,都是非常经典的资料,另外还可以
3.80MB
在Web API中使用jQuery AJAX实现文件上传的例子
2014-09-09在Web API中使用jQuery AJAX实现文件上传的例子
40.53MB
精通Java Web整合开发(JSP+AJAX+Struts+Hibernate)(第2版)
2012-11-29书籍目录: 《精通java web整合开发(jsp+ajax+struts+hibernate)(第2版)》 第1篇 基 础 篇 第1章 java web应用开发技术选用策略 第2章 开发运行环境的安
1.94MB
JSP/J2EE/JAVA版网络问卷调查系统毕业设计论文及源代码
2009-04-24欢迎加入QQ群109940879 讨论 本人的毕业设计全部内容(有朋友反应缺失文件,这是误解哈,所有文件都在这个包里了,请仔细阅读说明文档),包括论文和源代码,主题为基于J2EE的网络问卷调查系统设计
69.92MB
21天学通javascript(第2版)(顾宁燕) pdf扫描版
2014-09-26《21天学通javascript(第2版)(含dvd光盘1张)》中,每一篇都是不同层次的完整内容,这不仅给初学者安排了循序渐进的学习过程,也便于不同层次读者选读。本书既适合没有编程基础的javascr
3.85MB
ajax+jsp+Hibernate实现的Blog源代码
2007-08-01ajax+jsp+Hibernate打造的Blog源码,把它拆分了吧,看看你能不能模仿一个出来。
17.66MB
Struts2 + Spring3 + Hibernate3.5 整合(实际使用项目,version2)
2010-05-12这是一个实际使用中的项目,可访问 http://cdbke.cuit.edu.cn 可查看效果及功能,后台需要登录后才能使用(出于安全性考虑这里就不给大家介绍了,另外还有一个struts1版本的,如有
179B
史上最好传智播客就业班.net培训教程60G 不下会后悔的
2013-07-08.Net精品就业班课程表 : 1、.Net基础加强(10天) 核心技术课程 常用数据结构(List、Dictionary、Array)、多态、常用设计模式、反射、常用.net类库、泛型、IO流、委托事
147.89MB
JavaScript入门经典(第3版) (Beginning JavaScript 3rd Edition)中文PDF扫描版
2014-09-26《Java Script入门经典(第3版)》首先介绍了J avaScript的基本语法,并介绍了如何发挥JavaScript中对象的威力。《Java Script入门经典(第3版)》还介绍了如何操纵最
26.34MB
零基础学JavaScript
2008-05-29零基础学JavaScript
7KB
完整ajaxfileupload.js
2015-11-21ajax上传文件必须js文件,修复其中缺少handleError方法,json处理带有<pre></pre>,问题,亲测可以,直接引用即可!
57.49MB
java源码包2
2013-04-20Applet钢琴模拟程序java源码 2个目标文件,提供基本的音乐编辑功能。编辑音乐软件的朋友,这款实例会对你有所帮助。 Calendar万年历 1个目标文件 EJB 模拟银行ATM流程及操作源代码
14.58MB
Java Web酒店管理系统源码 +mysql 数据库
2014-03-19酒店管理系统分为前台和后台两个部分,其中后台供管理员管理系统之用,包括客房类型设置模块、客房设置模块以及操作员设置三个子模块,具体的功能模块如下。 客房类型设置模块:该模块用来管理酒店的所有客房类型,
6.83MB
java web技术开发大全(最全最新)
2012-10-10提供典型应用案例,剖析JSP/Servret技术与Struts 2技术在Web开发中的不同 提供完整的应用案例,使读者可以深入体会SSH开发模式的精髓 所有开发工具和框架均使用目前的最新版本,紧跟技术
56.78MB
ASP.NET开发典型模块大全 (修订版) (源代码)
2011-11-15《ASP.NET开发典型模块大全(修订版)》以关键技术和热点技术为核心,通过27个典型模块和5章热点技术,全面地介绍了如何使用asp.net进行各领域的web项目开发。全书共3篇分为32章,第1篇关键
500.0MB
java web开发实战1200例 第二卷 源码
2013-04-01范围两个压缩部分,请留意下载后解压! 内容简介 《Java Web开发实战1200例(第2卷)》以开发人员在项目开发中经常遇到的问题和必须掌握的技术为核心,介绍了应用Java Web进行程序开发的各个
3.85MB
jQuery EasyUI 1.4 离线简体中文API文档 含完整开发工具包+皮肤+扩展+演示
2014-08-07(题外话:从本次开始 我新增了jQuery EasyUI的专题页面 大家可以关注我的专题页来及时获取最新的EasyUI资源 专题页地址如下http:http://download.csdn.net/a
269KB
Java中使用Ajax、Jquery带进度条文件上传.
2011-12-20Java中使用Ajax、Jquery带进度条文件上传,需要的下吧,忙了我一个下午噢,累死了。
9.61MB
基于ASP.NET的网盘系统在线文件管理模块开发
2012-08-20基于ASP.NET的网盘系统在线文件管理模块开发,是一套完整开发网盘项目的系统,在线文件管理模块特点:1、全静态页面、执行效率高;2、使用AJAX技术,用户体验好;3、界面美观,全新的对话框;4、 操
523B
AjaxRequest(Ajax使用包)
2011-10-21Ajax开发包Ajax开发包Ajax开发包Ajax开发包Ajax开发包Ajax开发包Ajax开发包Ajax开发包Ajax开发包Ajax开发包
26.73MB
毕业设计+源码(项目管理系统)完整框架
2011-12-25项目管理系统界面高清截图http://yaerfeng1989.blog.163.com相册。绝版作品!一切都只是曾经,神马都是浮云!现将其开源 ssh+jquery+servlet+json+dwr
-
学院
(新)备战2021软考网络工程师培训学习套餐
(新)备战2021软考网络工程师培训学习套餐
-
博客
中继器添加行和删除当前行
中继器添加行和删除当前行
-
博客
PCB叠层及阻抗简要
PCB叠层及阻抗简要
-
下载
非常轻量又实用的鼠标拾色器小工具
非常轻量又实用的鼠标拾色器小工具
-
博客
C++中引用的本质
C++中引用的本质
-
学院
(新)备战2021软考网络规划设计师终极解密套餐
(新)备战2021软考网络规划设计师终极解密套餐
-
下载
云计算实验二_hadoop常用命令.docx
云计算实验二_hadoop常用命令.docx
-
下载
win7&win10文件透明加解密.rar
win7&win10文件透明加解密.rar
-
下载
android-x86_64-9.0-r2 0积分下载
android-x86_64-9.0-r2 0积分下载
-
下载
闻上云刷群晖6.2.2风扇调速脚本
闻上云刷群晖6.2.2风扇调速脚本
-
博客
鸿蒙系统-手机-JS FA(Feature Ability)调用Java PA(Particle Ability)
鸿蒙系统-手机-JS FA(Feature Ability)调用Java PA(Particle Ability)
-
学院
备战2021软考网络规划设计师历年真题套餐
备战2021软考网络规划设计师历年真题套餐
-
博客
Scala之函数式编程(2)
Scala之函数式编程(2)
-
下载
吉林大学 数据挖掘作业 第一题
吉林大学 数据挖掘作业 第一题
-
下载
多用户多级目录文件系统.zip
多用户多级目录文件系统.zip
-
下载
老魔域20200320.rar
老魔域20200320.rar
-
学院
微软人工智能AI量化投资平台Qlib技术教程
微软人工智能AI量化投资平台Qlib技术教程
-
学院
(新)备战2021软考信息安全工程师基础知识套餐
(新)备战2021软考信息安全工程师基础知识套餐
-
博客
服务无法连接Redis,服务连接Redis超时
服务无法连接Redis,服务连接Redis超时
-
下载
系统安装部署神器1.8.0.6790
系统安装部署神器1.8.0.6790
-
下载
A7128 Datasheet v1.2.pdf
A7128 Datasheet v1.2.pdf
-
学院
基于X210的裸机时钟温度显示器-第3/3季
基于X210的裸机时钟温度显示器-第3/3季
-
学院
备战2021年软考信息系统项目管理师考试学习套餐
备战2021年软考信息系统项目管理师考试学习套餐
-
博客
vue v-module的本质
vue v-module的本质
-
学院
【数据分析-随到随学】Tableau数据分 析+PowerBI
【数据分析-随到随学】Tableau数据分 析+PowerBI
-
博客
2021-01-16交叉熵损失函数比均方误差损失函数优点在哪里
2021-01-16交叉熵损失函数比均方误差损失函数优点在哪里
-
博客
蓝桥杯 Java基础练习 十进制转十六进制
蓝桥杯 Java基础练习 十进制转十六进制
-
博客
Java中next()和nextline()的用法
Java中next()和nextline()的用法
-
博客
使用JDBC连接数据库步骤
使用JDBC连接数据库步骤
-
学院
21年新MybatisPlus+Swagger3.x+SpringBo
21年新MybatisPlus+Swagger3.x+SpringBo