一种基于WebKit浏览器引擎的动态页面数据采集方法

文档序号:6426401阅读:1220来源:国知局
专利名称:一种基于WebKit浏览器引擎的动态页面数据采集方法
技术领域
本发明涉及计算机信息技术领域,具体涉及到基于WebKit浏览器引擎的动态页面数据采集方法。
背景技术
随着 Web2. 0 的兴起,AJAX (Asynchronous JavaScript and XML,异步 Javakript 和XML)技术风靡一时,客户端与服务器端异步交互的方式既减小了服务器端的压力,而且带来了更好的用户体验。然而,使用该技术产生的大量动态网页给网络数据获取造成了新的难题,传统的用于采集静态网页的Web数据采集工具如网络爬虫抓取的内容远少于页面呈现的内容,大量动态网页中的有用信息无法获取使得以网络数据为主要处理对象的工作无法顺利进行,严重影响了网络内容监控,网络数据挖掘等学科的发展。因此,如何改进传统的Web数据采集系统,使之支持动态页面解析,已经成为了当前信息采集技术的一个研究热点。互联网领域的专家学者们对此课题做了不少有益的研究尝试,提出了有建设性的思路和解决方案。当前动态页面采集的主要方法大体有两种 一是利用开源浏览器接口(如Firefox),以编写插件的形式对浏览器输出结果进行采集; 二是利用现有的脚本解释引擎(如SpiderMonkey、Rhino等)根据信息采集的需要对相关 DOM(DocumentObject Model,文档对象模型)对象进行绑定,对输出结果进行采集。然而, 目前的研究也存在一些问题一是现在的研究主要面向设计大规模网络爬虫爬取动态网页的通用方法,对于一些有针对性的定向的数据采集(如特定论坛或商业网站商品信息的采集)支持效果不够理想;二是大部分方案实现较为复杂,并不适用于小规模即时的数据采集需求。基于以上原因,本文在一个简单的爬取类论坛结构数据的爬虫基础上进行了扩展,提出了一种基于WebKit浏览器引擎的采集动态页面数据方案。通过采用Qt ( 一个跨平台的C++图形用户界面库)框架,使得程序有较好的可靠性及跨平台性;通过将接口与配置文件分离的方式,使程序具有很好的可扩展性;针对复杂的网络环境设计了超时等待机制, 程序的鲁棒性有了很大的提高。当前动态页面采集的主要方法大体有两种一是利用开源浏览器接口(如 Firefox),以编写插件的形式对浏览器输出结果进行采集;二是利用现有的脚本解释引擎 (如SpiderMonkeyjhino等)根据信息采集的需要对相关DOM对象进行绑定,对输出结果进行采集。目前主要面向设计大规模网络爬虫爬取动态网页的通用方法,对于一些有针对性的定向的数据采集(如特定论坛或商业网站商品信息的采集)支持效果不够理想;其次大部分方案实现较为复杂,并不适用于小规模即时的数据采集需求。

发明内容
本文在一个简单的爬取类论坛结构数据的爬虫基础上进行了扩展,提出了一种基于WebKit浏览器引擎的采集动态页面数据方案。通过采用Qt框架,使得程序有较好的可靠性及跨平台性;通过将接口与配置文件分离的方式,使程序具有很好的可扩展性;针对复杂的网络环境设计了超时等待机制,程序的鲁棒性有了很大的提高。本发明实施例提供了一种基于WebKit浏览器引擎的动态页面数据采集方法,包括向服务器端发送http请求,接收原始页面数据,构建DOM树,所述发送http请求, 接收原始页面数据,解析js及构建DOM树由WfebKit底层实现;针对不同的网站,维护相应的配置文件,配置文件中包含触发相应事件的js代码,以字符串的形式传递给WebKit提供的js执行接口,由WebKit根据事件相应,更新DOM 树;调用WfebKit的I/O接口,将DOM树转化成html格式,以字符串的形式输出。所述方法采用三线程方式实现数据接收,具体包括线程一负责正常的数据接收,监听IoadFinished信号,若正常接收则终止线程二,设置接收标志位为成功状态;线程二为定时器线程,该线程监听接收时间,若超过预定接收时间即认为超时,终止正常接收线程,并且设置接收标志位为失败状态;线程三对外提供接口,提供接收标志状态,后续步骤可通过此标志位进行相应的处理。所述触发网页事件更新DOM树包括线程一运行配置文件中js代码,模拟触发事件的操作,并且循环等待服务器数据;若接收数据完成则唤醒线程二,对外提供接收状态指示接口 ;线程二负责等待线程一数据完成更新D0M。本文给出了一个基于WebKit浏览器引擎采集动态页面数据的方案。对整体的结构及关键流程做了详细的说明。经过在多个论坛及商品销售网站上进行测试,验证了该方法可行高效,并且通过设计实现超时等待机制加强了程序的健壮性,可以应对较为复杂的网络环境。通过配置文件的方式实现了可扩展性的需求。其成功之处就在于其构建了更为动态和响应更为灵敏的Web应用,实现了浏览器和服务器之间的异步并行处理,既减轻了服务器端的负担又带来了独特的用户体验。对于即时的中小规模的动态页面数据采集有很好的实用借鉴价值。


为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。图1是现有技术中的Web应用模型结构示意图;图2是本发明实施例中的AJAX应用模型结构示意图;图3是本发明实施例中的WebKit浏览器内核结构示意图;图4是本发明实施例中的QWebView、QffebPage及QWebFrame类之间的关系结构图;图5是本发明实施例中的类论坛结构数据采集体系结构示意图;图6是本发明实施例中的动态页面采集模块结构示意图;图7是本发明实施例中的QWebpage类接口示意图;图8是本发明实施例中的数据接收流程图;图9是本发明实施例中的触发网页事件流程图。
具体实施例方式下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。本文在一个简单的爬取类论坛结构数据的爬虫基础上进行了扩展,提出了一种基于WebKit浏览器引擎的采集动态页面数据方案。通过采用Qt框架,使得程序有较好的可靠性及跨平台性;通过将接口与配置文件分离的方式,使程序具有很好的可扩展性;针对复杂的网络环境设计了超时等待机制,程序的鲁棒性有了很大的提高。2. IAJAX的定义及关键技术AJAX 是 Asynchronous JavaScript and XML (异步 JavaScript 和 XML)的缩写, 由著名用户体验专家Jesse-James Garrett于2005年首先提出。AJAX不是一种新技术, 而是一系列已经被广泛应用的Web相关技术的组合,如XML、CSS、DOM、XMLHttpRequest、 JavaScript等。其成功之处就在于其构建了更为动态和响应更为灵敏的Web应用,实现了浏览器和服务器之间的异步并行处理,既减轻了服务器端的负担又带来了独特的用户体验。标准的AJAX包括(1)采用XHTML和CSS标准化显示(2)采用DOM实现动态显示和交互(3)采用XML和XSLT进行数据交互和处理(4)采用XMLHttpRequest进行异步数据获取(5)采用JavMcript进行绑定和处理数据2. 2Ajax模型与传统Web应用模型的区别与传统的Web应用不同,AJAX并不是基于静态页面的方式来构建应用,它推行更少量的页面组成,其中每个页面是一个更小型的使用JavMcript开发的AJAX组件,这些组件使用XMLHttpRequest对象以异步的方式与服务器通信,从服务器端获取需要的数据后对使用DOM API更新页面内容。在传统的Web应用模型中,典型的交互的方式是由客户端浏览器向Web服务器发送HTTP请求。Web服务器对用户的请求进行处理,将处理结果以HTML页面的形式返回给客户端浏览器。用户必须在发送HTTP请求或Web服务器处理过程中进行等待,而且即便是仅仅改变页面中的一小部分内容,Web服务器都要返回一个完整的Web页面,浪费了大量的时间和带宽。传统的Web应用模型如图1所示。AJAX的工作原理与传统Web应用模型不同之处在于浏览器与Web服务器之间采用的是异步通信方式,在客户端和服务器之间增加了一个中间层——AJAX引擎,用以处理客户端的请求,实现了交互的异步化。用户的操作并不都提交给服务器,一些数据验证和处理由AJAX引擎完成,只有需要从服务器读取新数据时才由AJAX引擎向服务器提交请求。AJAX 引擎以后台运行方式获取所需数据,不需要重载整个页面,只需更新所需部分的内容,大大减少了数据传输量,缩短了响应时间,既减轻了服务器端的负担又提升了用户体验。AJAX应用模型如图2所示。2. 3WebKit浏览器内核WebKit的前身是KDE小组的KHTML,简单来说是一个开源的Web浏览器引擎,也就是浏览器的内核。Apple的&ifari,Google的Chrome,NokiaS60,Android手机的默认浏览器均采用的WeWdt作为内核,是同Gecko、Trident并称的当今主流的三大浏览器内核之一。其引擎高效稳定,兼容性好,源码结构清晰,易于维护。WebKit从代码结构上来说主要包含三大部分,如图3所示。其中核心部分为狗13&)1^,它实现了对文档的模型化,包括055,DOM, Render等, JavaScript Core是对Javakript的支持。而Wfelikit部分抽象出了与浏览器直接对应的一些概念的实现,如WebView,WeWage,WebFrame等。应用程序不需要直接操作WebCore及 JavaScript Core,而是同W^ebKit模块提供的API进行交互。2. 4Qt开发框架及对W^ebKit的支持Qt是著名的跨平台的C++应用程序开发框架,自Qt4. 5集成了 WebKit以来,其丰富便利的通用接口模糊了应用程序与网络内容的差别。其对WebKit的支持主要包括表1 所示的几个类。表一 Qt中对WebKit支持的类
权利要求
1.一种基于WebKit浏览器引擎的动态页面数据采集方法,其特征在于,包括向服务器端发送http请求,接收原始页面数据,构建DOM树,所述发送http请求,接收原始页面数据,解析js及构建DOM树由WfebKit底层实现;针对不同的网站,维护相应的配置文件,配置文件中包含触发相应事件的js代码,以字符串的形式传递给WebKit提供的js执行接口,由WebKit根据事件相应,更新DOM树;调用W^ebKit的I/O接口,将DOM树转化成html格式,以字符串的形式输出。
2.如权利要求1所述的基于WebKit浏览器引擎的动态页面数据采集方法,其特征在于,所述方法采用三线程方式实现数据接收,具体包括线程一负责正常的数据接收,监听IoadFinished信号,若正常接收则终止线程二,设置接收标志位为成功状态;线程二为定时器线程,该线程监听接收时间,若超过预定接收时间即认为超时,终止正常接收线程,并且设置接收标志位为失败状态;线程三对外提供接口,提供接收标志状态,后续步骤可通过此标志位进行相应的处理。
3.如权利要求2所述的基于WebKit浏览器引擎的动态页面数据采集方法,其特征在于,所述触发网页事件更新DOM树包括线程一运行配置文件中js代码,模拟触发事件的操作,并且循环等待服务器数据;若接收数据完成则唤醒线程二,对外提供接收状态指示接口 ;线程二负责等待线程一数据完成更新D0M。
全文摘要
本发明公开了一种基于WebKit浏览器引擎的动态页面数据采集方法,包括向服务器端发送http请求,接收原始页面数据,构建DOM树,所述发送http请求,接收原始页面数据,解析js及构建DOM树由WebKit底层实现;针对不同的网站,维护相应的配置文件,配置文件中包含触发相应事件的js代码,以字符串的形式传递给WebKit提供的js执行接口,由WebKit根据事件相应,更新DOM树;调用WebKit的I/0接口,将DOM树转化成html格式,以字符串的形式输出。本发明技术方案通过配置文件的方式实现了可扩展性的需求,实现了浏览器和服务器之间的异步并行处理,减轻了服务器端的负担,增加了用户体验。
文档编号G06F9/44GK102214098SQ201110161800
公开日2011年10月12日 申请日期2011年6月15日 优先权日2011年6月15日
发明者李飞燕, 杨艾琳, 陈曦 申请人:中山大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1