欢迎来到天天文库
浏览记录
ID:5253044
大小:34.00 KB
页数:10页
时间:2017-12-07
《支持ajax网络爬虫设计和实现》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、支持AJAX网络爬虫设计和实现 摘要:分析了Web2.0网络的网络爬虫面临的新挑战,对目前学术界出现的多种实现方案和策略进行了全面的综述,提出了AJAX爬虫的设计并加以实现,最后进行了实验验证,验证了这种AJAXCrawler能够很好地获取AJAX的动态页面,并与普通的爬虫在下载速度方面进行了对比。关键词:动态网页;AJAX;Web2.0;网络爬虫中图分类号:TP393文献标识码:A文章编号:2095-2163(2013)06-0057-040引言Web2.0是相对Web1.0的新一代互联网应用
2、的统一名称。Web1.0的重要特征是用户通过使用浏览器获取静态的网络信息。Web2.0则侧重于用户与用户之间的交流和沟通,用户不仅作为网页内容的查看者,同时也是网页内容的创造者。所说的网页内容的创造者是指互联网上的所有用户不再只是互联网内容的读者,同时也成为了互联网内容的作者;不再仅是冲浪于互联网海洋之中,同时也是海洋波浪的制造者;在模式上由纯粹的“只读”变为“读写”进而发展成为“共同建设”;由简单被动地接收互联网信息转变为主动创造互联网信息,从而增加了互动,更加符合用户的使用习惯。10近年来,随
3、着Web2.0的兴起,在Web开发中运用AJAX技术的网站越来越多,这些技术的应用带来了更好的用户体验、很多新概念和WebUI设计,同时,由于AJAX技术可以动态改变页面内容,改造了传统Web页面的结构,导致单纯抓取静态Web页面的网络爬虫抓取的内容少于页面呈现的内容,这些动态内容给网络爬虫的设计带来极大挑战,使得爬虫不能获取到网页页面所呈现的全部文本。本文研究能够支持AJAX的网络爬虫的原理,实现一个支持AJAX且能够进行定制任务的网络爬虫,高效率地对网页信息进行采集。第1节介绍国内外对AJAX
4、页面的抓取研究情况,第2节介绍支持AJAX的爬虫的设计及具体实现,第3节通过实验验证了支持AJAX的爬虫的可行性。1相关工作10现阶段,主流的搜索引擎,例如:Yahoo!和Google等,都无法对AJAX动态网页建立索引,也就是说不能利用现有的搜索引擎来查询动态网页的内容。而能够支持AJAX的搜索引擎还处于研究阶段,罗兵使用基于协议的动态页面抓取方法,获取AJAX网页内包含的JavaScript代码片段,通过设计脚本语言解释器直接分析脚本代码,仿照浏览器功能顺序执行脚本文件,用来模拟页面的状态转换
5、[1],肖卓磊在之后的研究中也采用了类似的处理方法[2];曾伟辉、李淼利用切片算法构造了程序层次模型,解决了有序执行JavaScript脚本的问题[3];Frey[4]和Matter[5]改进了开源的JavaScript解释器Rhino[6],用来实现状态转换和脚本执行。实现全部功能的脚本解释器较为困难,即便是已开发多年的Rhino项目,依旧有很多的脚本代码不能正常执行,于是,更多的研究人员将研究重点落定于嵌入式浏览器组件,运用组件来模拟AJAX页面的渲染并实现脚本的执行,以达到自动转换状态的目的
6、;在国内,采用类似方法研究的是王映[7]和金晓鸥[8],研究对使用网络爬虫分析脚本语言的技术进行了一些研究,前者使用的是开源的JavaScript引擎SpiderMonkey,而后者利用的是Rhino。因其均解析了包含JavaScript脚本代码的动态页面,从页面中抓取了JavaScript代码,由此获得了网页上的URL,并实现了内容爬取。Frey和Matter扩展了Cobra工具集[9],完成了动态解析和加载HTML代码,然后在内部形成DOM结构树,并通过DOM树获取状态包含的内容。类似于状态转
7、换问题,为了最大限度地利用现有的技术,多数的状态内容获得方式是采用嵌入浏览器组件作为运行AJAX容器,并使用浏览器的外部接口实现和DOM树的数据交互,由此而获得完整的内容[10-13]。10在控制转换方面,较为常用的方式是采用事件过滤机制,对已经过滤后的事件逐一进行触发。为了提高执行效率,Xia[12]和Duda[14]均提出让用户能够自定义过滤规则,也就是加入拒绝规则和接收规则,如此即使得只有在符合规则的集合里才能进行状态转换;Mesbah等采用面向领域的手工配置、HTML元素注解和全自动扫描三
8、种方式来对状态转换进行控制[10];Matter则提出了一种启发式的爬行策略,尽量避免从不同路径进入相同的页面状态[5]。2AJAXCrawler爬虫设计方案及实现由于Web2.0的流行,使用AJAX技术的网站越来越多,本文采用了Rhino引擎对AJAX进行了支持。2.1JavaScript引擎RhinoRhino采用Java语言实现的JavaScript脚本引擎。Rhino用在Java程序中,为最终用户提供脚本化能力。Rhino包含JavaScript编译器、JavaScript
此文档下载收益归作者所有