一种基于浏览器内核的网络爬虫系统技术方案

技术编号:15294527 阅读:81 留言:0更新日期:2017-05-11 11:22
本发明专利技术涉及网页搜索引擎技术,旨在提供一种基于浏览器内核的网络爬虫系统。该种基于浏览器内核的网络爬虫系统包括浏览器引擎模块、网络通信模块、策略模块,用于进行页面分析并发现其他页面的URL。本发明专利技术使用动态分析技术,通过内置的浏览器内核,去动态的加载页面依赖的资源,并执行Javascript脚本,对DOM节点进行动态的操作如模拟鼠标点击、双击、回车等事件,以发现新的页面,弥补了传统爬虫的不足。

A web crawler system based on browser kernel

The invention relates to a web search engine technology, and aims to provide a web crawler system based on browser kernel. The web crawler system based on browser kernel includes browser engine module, network communication module and policy module, which can be used to analyze the page and find the URL of other pages. The invention uses dynamic analysis technology, through the built-in browser kernel, to dynamic load dependent resources, and execute the Javascript script, the DOM nodes are dynamic operations such as mouse click, double-click, press enter and other events, to find new pages, make up the traditional crawler.

【技术实现步骤摘要】

本专利技术是关于网页搜索引擎
,特别涉及一种基于浏览器内核的网络爬虫系统
技术介绍
网络爬虫有着广泛的应用场景,它是网页搜索引擎的重要组成部分,也被用来获取网络中的特定信息。网络爬虫最核心的功能就是从一个页面中发现其他页面的URL。目前常见的网络爬虫,都是基于对页面的静态分析的——在分析页面时,不会去动态的执行页面中的Javascript脚本,也不会加载页面中的图片、脚本等资源。静态分析页面时,主要提取页面中的<a>标签、<form>标签等可能含有指向其他页面URL的内容。随着互联网技术飞速发展,网页的实现方式也越来越多样化,各种前端技术手段层出不穷,传统的对页面进行静态分析的方法要想分析这些页面,就变得越来越难,比如:1.页面中的按钮在被点击时,向服务器的另一个页面发送一个Ajax请求;2.页面中的<a>标签是在页面中的Javascript脚本执行时动态生成的。在例子1中,Ajax请求被发到哪里只有执行过Javascript脚本才知道。Ajax请求的目的URL可能指向一个新的页面。如果用静态分析的方法来分析页面,就可能漏掉这个页面了。在例子2中,<a>标签是在浏览器中执行Javascript脚本才会产生并显示给用户的,如果只是静态分析,根本无法在页面的源码中找到该标签。
技术实现思路
本专利技术的主要目的在于克服现有技术中的不足,提供一种能够抓取Ajax请求中的URL以及动态构建的DOM节点中含有的URL的系统。为解决上述技术问题,本专利技术的解决方案是:提供一种基于浏览器内核的网络爬虫系统,用于进行页面分析并发现其他页面的URL,所述基于浏览器内核的网络爬虫系统包括浏览器引擎模块、网络通信模块、策略模块;所述浏览器引擎模块用于接收一个网页的URL作为输入,加载该页面以及对页面进行分析,并动态执行页面中的脚本;浏览器引擎模块在加载完一个页面之后,能形成一个DOM树,DOM树中的需要通过事件触发JS操作的DOM节点会绑定事件(如点击、双击、键盘按键等事件);所述网络通信模块是浏览器引擎模块与网络服务器进行交互的模块,用于发送和接收网络数据包,从而获取URL;网络通信模块能处理http请求、ftp通信,并抓取浏览器引擎模块发送的网络数据包,用于通过抓取的网络数据包来获取和本页面有关的所有其他URL;所述策略模块能在浏览器引擎模块一个页面加载完成后,触发页面中的DOM节点绑定的事件,用于执行页面中只有通过触发才能执行到的Javascript代码。在本专利技术中,所述浏览器引擎模块能采用webkit、blink、Trident或者Gecko实现。在本专利技术中,所述网络通信模块能利用浏览器引擎模块中原有的网络通信接口实现(浏览器内核中包含有发送接收网络数据包的接口,可以通过直接修改该接口将需要的URL数据以一定格式输出方便获取),或者使用HOOK技术实现。在本专利技术中,所述策略模块是使用Javascript编写的脚本文件,用于触发DOM事件。提供所述基于浏览器内核的网络爬虫系统的使用方法,使用基于浏览器内核的网络爬虫系统处理一个页面,具体步骤为:1)输入一个初始URL地址给浏览器引擎;2)浏览器引擎会加载该URL地址的网页,并加载该网页内的所有资源,在加载过程中,会发送一些HTTP请求,这些HTTP请求都会被网络通信部分获得并保存起来;3)加载完毕之后,逐个触发DOM树中节点所有绑定的事件,有些事件在触发时,会在DOM中增加新的节点,这部分节点中绑定了事件的,也要逐个触发事件并注意处理不停产生新节点而导致程序无法结束的问题;在该过程中,浏览器引擎又会发送一些HTTP请求,这些HTTP请求同样都会被网络通信部分获得并保存起来;4)把步骤2)和步骤3)的HTTP请求汇总,根据需求提取所有或部分HTTP请求的URL部分、Method部分、Body部分等,作为输出的结果。与现有技术相比,本专利技术的有益效果是:本专利技术使用动态分析技术,通过内置的浏览器内核,去动态的加载页面依赖的资源,并执行Javascript脚本,对DOM节点进行动态的操作如模拟鼠标点击、双击、回车等事件,以发现新的页面,弥补了传统爬虫的不足。附图说明图1为本专利技术的工作示意图。具体实施方式首先需要说明的是,本专利技术涉及网页搜索引擎技术,是计算机技术在互联网
的一种应用。在本专利技术的实现过程中,会涉及到多个软件功能模块的应用。申请人认为,如在仔细阅读申请文件、准确理解本专利技术的实现原理和专利技术目的以后,在结合现有公知技术的情况下,本领域技术人员完全可以运用其掌握的软件编程技能实现本专利技术。前述软件功能模块包括但不限于:浏览器引擎模块、网络通信模块、策略模块等,凡本专利技术申请文件提及的均属此范畴,申请人不再一一列举。下面结合附图与具体实施方式对本专利技术作进一步详细描述:如图1所示的一种基于浏览器内核的网络爬虫系统包括浏览器引擎模块、网络通信模块、策略模块,用于进行页面分析并发现其他页面的URL。所述浏览器引擎用于接收一个网页的URL作为输入,加载该页面以及对页面进行分析,并动态执行页面中的脚本,浏览器引擎能够发送网络数据包。浏览器引擎可以是webkit、blink、Trident、Gecko等,也可以是自己实现的一个浏览器引擎。在程序中集成一个浏览器引擎之后,可以自己实现网络通信模块来处理http请求、ftp通信等,这样就可以在这部分代码中抓取浏览器引擎的所有网络数据包。如果不自己实现网络通信模块,也可以通过在原有的网络通信模块插入代码,或者直接调用浏览器引擎的接口来实现抓取网络数据包的功能。浏览器引擎在加载一个页面完毕之后,会形成一个DOM树,DOM树中的某些节点会绑定事件(如点击、双击、键盘按键等事件)。为了让页面中的所有的Javascript代码都执行到,需要逐个触发DOM树中节点绑定的事件。如果一个事件的处理函数中有发起Ajax请求的行为,则数据包会被网络通信模块抓取到。使用该基于浏览器内核的网络爬虫系统处理一个页面,其具体流程为:1、输入一个初始URL地址给浏览器引擎。2、浏览器引擎会加载该URL地址的网页,并加载该网页内的所有资源(如Javascript,CSS,图片等),在加载过程中,会发送一些HTTP请求,这些HTTP请求都会被网络通信部分获得并保存起来。3、加载完毕之后,逐个触发DOM树中节点所有绑定的事件,有些事件在触发时,会在DOM中增加新的节点,这部分节点中绑定了事件的,也要逐个触发事件并注意处理不停产生新节点而导致程序无法结束的问题;在该过程中,浏览器引擎又会发送一些HTTP请求,这些HTTP请求同样都会被网络通信部分获得并保存起来。4、爬虫程序把步骤2和步骤3的HTTP请求汇总,根据需求提取所有或部分HTTP请求的URL部分、Method部分、Body部分等,作为程序输出的结果。最后,需要注意的是,以上列举的仅是本专利技术的具体实施例。显然,本专利技术不限于以上实施例,还可以有很多变形。本领域的普通技术人员能从本专利技术公开的内容中直接导出或联想到的所有变形,均应认为是本专利技术的保护范围。本文档来自技高网
...
一种基于浏览器内核的网络爬虫系统

【技术保护点】
一种基于浏览器内核的网络爬虫系统,用于进行页面分析并发现其他页面的URL,其特征在于,所述基于浏览器内核的网络爬虫系统包括浏览器引擎模块、网络通信模块、策略模块;所述浏览器引擎模块用于接收一个网页的URL作为输入,加载该页面以及对页面进行分析,并动态执行页面中的脚本;浏览器引擎模块在加载完一个页面之后,能形成一个DOM树,DOM树中的需要通过事件触发JS操作的DOM节点会绑定事件;所述网络通信模块是浏览器引擎模块与网络服务器进行交互的模块,用于发送和接收网络数据包,从而获取URL;网络通信模块能处理http请求、ftp通信,并抓取浏览器引擎模块发送的网络数据包,用于通过抓取的网络数据包来获取和本页面有关的所有其他URL;所述策略模块能在浏览器引擎模块一个页面加载完成后,触发页面中的DOM节点绑定的事件,用于执行页面中只有通过触发才能执行到的Javascript代码。

【技术特征摘要】
1.一种基于浏览器内核的网络爬虫系统,用于进行页面分析并发现其他页面的URL,其特征在于,所述基于浏览器内核的网络爬虫系统包括浏览器引擎模块、网络通信模块、策略模块;所述浏览器引擎模块用于接收一个网页的URL作为输入,加载该页面以及对页面进行分析,并动态执行页面中的脚本;浏览器引擎模块在加载完一个页面之后,能形成一个DOM树,DOM树中的需要通过事件触发JS操作的DOM节点会绑定事件;所述网络通信模块是浏览器引擎模块与网络服务器进行交互的模块,用于发送和接收网络数据包,从而获取URL;网络通信模块能处理http请求、ftp通信,并抓取浏览器引擎模块发送的网络数据包,用于通过抓取的网络数据包来获取和本页面有关的所有其他URL;所述策略模块能在浏览器引擎模块一个页面加载完成后,触发页面中的DOM节点绑定的事件,用于执行页面中只有通过触发才能执行到的Javascript代码。2.根据权利要求1所述的一种基于浏览器内核的网络爬虫系统,其特征在于,所述浏览器引擎模块能采用webkit、blink、Trident或者Gecko实现。3.根据权利要求1所述的一种基于浏览器内核的网络爬虫系统,其特...

【专利技术属性】
技术研发人员:范渊陈刚黄进
申请(专利权)人:杭州安恒信息技术有限公司
类型:发明
国别省市:浙江;33

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1