[发明专利]一种基于WebKit浏览器引擎的动态页面数据采集方法无效
申请号: | 201110161800.8 | 申请日: | 2011-06-15 |
公开(公告)号: | CN102214098A | 公开(公告)日: | 2011-10-12 |
发明(设计)人: | 李飞燕;陈曦;杨艾琳 | 申请(专利权)人: | 中山大学 |
主分类号: | G06F9/44 | 分类号: | G06F9/44;G06F17/30 |
代理公司: | 暂无信息 | 代理人: | 暂无信息 |
地址: | 510006 广东省广州市番禺*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 webkit 浏览器 引擎 动态 页面 数据 采集 方法 | ||
技术领域
本发明涉及计算机信息技术领域,具体涉及到基于WebKit浏览器引擎的动态页面数据采集方法。
背景技术
随着Web2.0的兴起,AJAX(Asynchronous JavaScript and XML,异步JavaScript和XML)技术风靡一时,客户端与服务器端异步交互的方式既减小了服务器端的压力,而且带来了更好的用户体验。然而,使用该技术产生的大量动态网页给网络数据获取造成了新的难题,传统的用于采集静态网页的Web数据采集工具如网络爬虫抓取的内容远少于页面呈现的内容,大量动态网页中的有用信息无法获取使得以网络数据为主要处理对象的工作无法顺利进行,严重影响了网络内容监控,网络数据挖掘等学科的发展。
因此,如何改进传统的Web数据采集系统,使之支持动态页面解析,已经成为了当前信息采集技术的一个研究热点。互联网领域的专家学者们对此课题做了不少有益的研究尝试,提出了有建设性的思路和解决方案。当前动态页面采集的主要方法大体有两种:一是利用开源浏览器接口(如Firefox),以编写插件的形式对浏览器输出结果进行采集;二是利用现有的脚本解释引擎(如SpiderMonkey、Rhino等)根据信息采集的需要对相关DOM(DocumentObject Model,文档对象模型)对象进行绑定,对输出结果进行采集。然而,目前的研究也存在一些问题:一是现在的研究主要面向设计大规模网络爬虫爬取动态网页的通用方法,对于一些有针对性的定向的数据采集(如特定论坛或商业网站商品信息的采集)支持效果不够理想;二是大部分方案实现较为复杂,并不适用于小规模即时的数据采集需求。
基于以上原因,本文在一个简单的爬取类论坛结构数据的爬虫基础上进行了扩展,提出了一种基于WebKit浏览器引擎的采集动态页面数据方案。通过采用Qt(一个跨平台的C++图形用户界面库)框架,使得程序有较好的可靠性及跨平台性;通过将接口与配置文件分离的方式,使程序具有很好的可扩展性;针对复杂的网络环境设计了超时等待机制,程序的鲁棒性有了很大的提高。
当前动态页面采集的主要方法大体有两种:一是利用开源浏览器接口(如Firefox),以编写插件的形式对浏览器输出结果进行采集;二是利用现有的脚本解释引擎(如SpiderMonkey、Rhino等)根据信息采集的需要对相关DOM对象进行绑定,对输出结果进行采集。
目前主要面向设计大规模网络爬虫爬取动态网页的通用方法,对于一些有针对性的定向的数据采集(如特定论坛或商业网站商品信息的采集)支持效果不够理想;其次大部分方案实现较为复杂,并不适用于小规模即时的数据采集需求。
发明内容
本文在一个简单的爬取类论坛结构数据的爬虫基础上进行了扩展,提出了一种基于WebKit浏览器引擎的采集动态页面数据方案。通过采用Qt框架,使得程序有较好的可靠性及跨平台性;通过将接口与配置文件分离的方式,使程序具有很好的可扩展性;针对复杂的网络环境设计了超时等待机制,程序的鲁棒性有了很大的提高。
本发明实施例提供了一种基于WebKit浏览器引擎的动态页面数据采集方法,包括:
向服务器端发送http请求,接收原始页面数据,构建DOM树,所述发送http请求,接收原始页面数据,解析js及构建DOM树由WebKit底层实现;
针对不同的网站,维护相应的配置文件,配置文件中包含触发相应事件的js代码,以字符串的形式传递给WebKit提供的js执行接口,由WebKit根据事件相应,更新DOM树;
调用WebKit的I/O接口,将DOM树转化成html格式,以字符串的形式输出。
所述方法采用三线程方式实现数据接收,具体包括:
线程一负责正常的数据接收,监听loadFinished信号,若正常接收则终止线程二,设置接收标志位为成功状态;
线程二为定时器线程,该线程监听接收时间,若超过预定接收时间即认为超时,终止正常接收线程,并且设置接收标志位为失败状态;
线程三对外提供接口,提供接收标志状态,后续步骤可通过此标志位进行相应的处理。
所述触发网页事件更新DOM树包括:
线程一运行配置文件中js代码,模拟触发事件的操作,并且循环等待服务器数据;若接收数据完成则唤醒线程二,对外提供接收状态指示接口;线程二负责等待线程一数据完成更新DOM。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中山大学,未经中山大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201110161800.8/2.html,转载请声明来源钻瓜专利网。
- 上一篇:户外LED灯具
- 下一篇:一种提高驱动电源散热性能的LED路灯