网页页面链接地址的获取方法和装置制造方法

文档序号:6639589阅读:236来源:国知局
网页页面链接地址的获取方法和装置制造方法
【专利摘要】本发明公开了一种网页页面链接地址的获取方法和装置。该方法包括:加载原始网页页面,监听原始网页页面是否发生跳转事件,触发用于模拟原始网页面发生跳转事件的点击事件,在监听到原始网页页面发生跳转事件的情况下,阻塞原始网页页面发生跳转,并截获原始网页页面的页面跳转请求,从页面跳转请求中读取原始网页页面所要跳转到的目标网页页面的链接地址。本发明解决了获取网页页面链接地址效率差的问题。
【专利说明】网页页面链接地址的获取方法和装置

【技术领域】
[0001]本发明涉及计算机互联网领域,具体而言,涉及一种网页页面链接地址的获取方法和装置。

【背景技术】
[0002]随着超文本标记语言html5时代的到来,越来越多的网站会选择在网页中嵌入大量的js代码来达到酷炫的网站浏览效果,很多网站会利用js来进行跳转的导航而不再直接使用<a>标签;对于搜索引擎而言,这些通过js来进行跳转的页面是难以获取到的,而且目前难以存在一种网页解析方法可以完整地将通过js来进行跳转的那些页面抓取到。对于一个希望拿到某个网站的网站地图的需求来讲,如果这个网站存在大量的js导航的页面,那么通过现行的爬虫方法是难以快速完整地获取网站地图的;对于一个单页式网站,在一些前端框架,也是无法获取其全部页面的。究其根源,是因为对于单独一个页面无法完整高效地解析出其到底可以连接到哪些页面。
[0003]现有的搜索引擎爬虫技术的原理是解析提取一个html页面的所有<a>标签的href属性的值。这种做法速度快,不需要额外的http请求,容易实现。然而随着html5的发展,在<a>标签的href属性内部署js代码来进行导航的情况逐渐增多,通过在span、div、button等标签的click事件中部署js跳转语句window, locat1n = ‘targetUrl’的情况亦逐渐增多。传统的搜索引擎爬虫技术并不能抓取到通过这些方法链接到的页面。
[0004]另一种显而易见的针对这个问题的做法就是模拟浏览器的点击操作,将每种dom元素都触发一次点击事件,等待运行结果并监测在等待时间内是否发生页面跳转。这种做法可以完整地获取到一个页面都链接到哪些其他页面,但是效率极差。该做法需要针对每一个dom元素进行点击操作,并且需要等待5至10秒的时间来判断是否会发生页面跳转。针对一个页面,则会随着这个页面dom元素的数量增多而效率变差。对于爬虫技术来说,需要在短时间内解析多个html页面,该做法显然是不现实的。
[0005]针对现有技术中获取网页页面链接地址效率差的问题,目前尚未提出有效的解决方案。


【发明内容】

[0006]本发明的主要目的在于提供一种网页页面链接地址的获取方法和装置,以解决现有技术中获取网页页面链接地址效率差的问题。
[0007]为了实现上述目的,根据本发明实施例的一个方面,提供了一种网页页面链接地址的获取方法,该方法包括:加载原始网页页面,触发用于模拟原始网页页面发生跳转事件的点击事件,监听原始网页页面是否发生跳转事件,在监听到原始网页页面发生跳转事件的情况下,阻塞原始网页页面发生跳转,并截获原始网页页面的页面跳转请求,从页面跳转请求中读取原始网页页面所要跳转到的目标网页页面的链接地址。
[0008]为了实现上述目的,根据本发明实施例的另一方面,提供了一种网页页面链接地址的获取装置,该装置包括:第一加载模块,用于加载原始网页页面,点击模块,用于触发用于模拟原始网页页面发生跳转事件的点击事件,截获模块,用于监听原始网页页面是否发生跳转事件,在监听到原始网页页面发生跳转事件的情况下,阻塞原始网页页面发生跳转,并截获原始网页页面的页面跳转请求,读取模块,用于从页面跳转请求中读取原始网页页面所要跳转到的目标网页页面的链接地址。
[0009]根据本发明实施例,通过网页页面链接地址的获取方法,解决了相关技术中获取网页页面链接地址效率差的问题,达到了高效的获取网页页面链接地址的效果。

【专利附图】

【附图说明】
[0010]构成本申请的一部分的附图用来提供对本发明的进一步理解,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
[0011]图1是根据本发明实施例的网页页面链接地址的获取方法的流程示意图;
[0012]图2是根据本发明实施例的网页页面链接地址的获取装置的结构示意图;
[0013]图3是根据本发明实施例的网页页面链接地址的获取装置的一种优选结构示意图;
[0014]图4是根据本发明实施例的网页页面链接地址的获取装置的另一种优选结构示意图;
[0015]图5是根据本发明实施例的网页页面链接地址的获取装置的另一种优选结构示意图;
[0016]图6是根据本发明实施例的网页页面链接地址的获取装置的另一种优选结构示意图;
[0017]图7是根据本发明实施例的网页页面链接地址的获取装置的另一种优选结构示意图。

【具体实施方式】
[0018]需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本发明。
[0019]为了使本【技术领域】的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
[0020]需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
[0021 ] 下面就对本申请涉及到的名词概念进行说明:
[0022]js: Javascript,—种由Netscape的LiveScript发展而来的脚本语言,主要目的是为了解决服务器终端语言。
[0023]dom:Document Object Model,文档对象模型,一种用于html和xml文档的编辑接口,它给文档提供了一种结构化的表示方法,可以改变文档的内容和呈现方式,把网页和脚本以及其他的编辑语言联系了起来。
[0024]phantomjs:是一个基于js的webkit内核无头浏览器,也就是没有显示界面的浏览器,这样访问网页就省去了浏览器的界面绘制所消耗的系统资源,比较合适用于网络测试。
[0025]实施例1
[0026]根据本发明实施例,提供了一种网页页面链接地址的获取方法的方法实施例。需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
[0027]本申请实施例一所提供的方法实施例可以在移动终端、计算机终端或者类似的运算装置中执行。
[0028]图1是根据本发明实施例的网页页面链接地址的获取方法流程示意图。出于描述的目的,所绘的体系结构仅为合适环境的一个示例,并非对本申请的使用范围或功能提出任何局限。也不应该将该网页页面链接地址的获取方法为对图1所示的任一组件或组合具有任何依赖或需求。
[0029]如图1所示,该网页页面链接地址的获取方法可以包括:
[0030]S12,加载原始网页页面,监听原始网页页面是否发生跳转事件;
[0031]其中,在步骤S12中,加载原始网页页面是利用phantomjs构建一个浏览器平台,以此来对要分析的页面中的js来进行解析,phantomjs为开发人员提供了一组API,通过phantomjs构建一个浏览器平台,将原始网页页面加载进来,这样访问网页就省去了浏览器界面绘制所消耗的系统资源,所以不再请求多余的图片、多媒体等资源,加快了原始网页页面的加载速度;上述原始网页页面为超文本标记语言html页面,在利用phantomjs构建的浏览器中加载html页面,并监听html页面是否发生跳转请求。
[0032]S14,触发用于模拟原始网页页面发生跳转事件的点击事件;
[0033]其中,在步骤S14中,通过在phantomjs中触发用于模拟原始网页页面发生跳转的点击事件,使得在phantomjs中模拟点击行为,进一步使得新的网页页面易于被捕捉到,最终获取目标网页页面的链接地址。
[0034]S16,在监听到原始网页页面发生跳转事件的情况下,阻塞原始网页页面发生跳转,并截获原始网页页面的页面跳转请求;
[0035]其中,在步骤S16中,原始网页页面为html页面,当html页面执行跳转指令时,监听到html页面发生跳转事件,阻塞html页面跳转至目标网页页面,终止目标网页页面的加载,并截获html页面的页面跳转请求;阻塞html页面跳转至目标网页页面可以阻止多余内容的加载,如此,不需要消耗过多的资源在多余的页面加载请求上。
[0036]S18,从页面跳转请求中读取原始网页页面所要跳转到的目标网页页面的链接地址。
[0037]其中,在步骤S18中,原始网页页面为html页面,在html页面跳转请求中包含有原始网页页面所要跳转到的目标网页页面的链接地址,该链接地址为统一资源定位器URL;所以,在截获html页面的页面跳转请求后,读取目标网页页面的链接地址URL,由于本方法是基于phantomjs的点击行为进行分析的,固可以非常完整地解析出网页中所包含的所有链接,不会受到js动态句法的干扰。
[0038]本申请上述实施例1的方法,提供了一种网页页面链接地址的获取方法,该方法通过浏览器加载原始网页页面,触发用于模拟原始网页页面发生跳转事件的点击事件,阻塞原始网页页面发生跳转,并从页面跳转请求中读取目标网页页面的链接地址;与现有技术相比,克服了一些js生成的链接难以被爬虫获取到的问题,进一步达到了高效获取网页页面链接地址的目的。
[0039]具体地,在步骤S12之前,该方法还包括:
[0040]S11,加载用于阻塞原始网页页面发生跳转的阻塞功能函数,并加载用于监听跳转事件以及捕获目标网页页面的链接地址的监控功能函数;其中,加载原始网页页面成功之后,启动阻塞功能函数。
[0041]在步骤Sll中,是利用phantomjs构建一个浏览平台来加载用于阻塞原始网页页面发生跳转的阻塞功能函数,phantomjs为开发人员提供了一组API,通过phantomjs构建一个浏览器平台,将原始网页页面加载进来,这样访问网页就省去了浏览器界面绘制所消耗的系统资源,不再请求多余的图片、多媒体等资源,加快了加载阻塞功能函数和监听功能函数的速度;其中,利用phantomjs加载html页面,以此来对要分析的html页面中的js来进行解析,调用phantomjs中所提供的一组API,其中,包括:阻塞功能函数navigat1nLocked,用于阻塞原始网页页面发生跳转,在点击的链接发生跳转之前及时终止新网页的加载;还有包括监控功能函数onNavigat1nRequested,用于监听跳转事件以及捕获目标网页页面的链接地址,本方法利用phantomjs构建一个浏览平台、并调用phantomjs中阻塞功能函数和监听功能函数,比朴素的模拟点击更快更高效。并且消耗的网络资源更小。
[0042]具体地,在步骤S14中,该方法还包括:
[0043]S142,通过调用创建事件函数创建原始网页页面的文档对象模型dom元素的点击事件;
[0044]在步骤S142中,由于phantomjs并不内置点击事件,所以本步骤是通过创建事件函数createEvent来创建原始网页页面的dom元素的点击事件的,其中,仓Il建每个dom元素的点击事件中,dom元素是本方法中必不可少的信息,因为在触发每个dom元素的点击事件后可以完整地获取到一个页面都链接到哪些其他网页。
[0045]S144,在监听原始网页页面是否发生跳转事件之前,通过调用调度事件函数触发原始网页页面的dom元素的点击事件。
[0046]在步骤S144中,通过调度事件函数dispatchEvent来对每个dom元素进行点击事件的触发,当一个dom元素被点击时,绝大多数情况下,都会在很短的时间内触发完毕所有的事件,这样,短时间内完成触发比朴素的模拟点击更快更高效。
[0047]具体地,步骤S16具体包括:
[0048]S162,在监听到原始网页页面的dom元素的点击事件被触发之后,通过调用判断函数判断是否触发所述页面跳转请求;
[0049]在这步骤S162中,在监听到原始网页页面中的dom元素的点击事件被触发之后,通过调用判断函数,判断是否也触发了页面跳转请求,例如,即如果一个dom元素被绑定的点击事件列表存在页面跳转事件,其将被迅速触发(约200毫秒以内),反之如果在这个时间内没有检测到有跳转事件被触发,则可以说该dom元素没有被绑定页面跳转事件。跳转事件被触发之后,则可以获取到跳转到的目标链接,即该页面所链接到的其他页面的信息。
[0050]S164,在判断结果为触发所述页面跳转请求的情况下,通过调用阻塞功能函数阻止加载页面跳转请求,使得阻塞原始网页页面发生跳转。
[0051]在步骤S164中,在判断结果为在短时间内已经触发了页面跳转请求的情况下,调用阻塞功能函数navigat1nLocked,将navigat1nLocked置为true以阻止加载页面跳转请求,使得点击的链接发生跳转之前及时终止新网页的加载,阻塞原始网页页面跳转至目标网页页面可以阻止多余内容的加载,如此,不需要消耗过多的资源在多余的页面加载请求上。
[0052]具体地,步骤S142之前,该方法还包括:
[0053]S13,通过调用获取函数获取所述原始网页页面的dom元素。
[0054]在步骤S13中,当执行当前任务队列时,首先,调用获取函数获取原始网页页面的dom元素,然后触发原始网页页面的dom元素的点击事件,进而判断是否也触发了页面跳转请求,跳转事件被触发之后,则可以获取到跳转到的目标网页页面的链接地址,即该原始网页页面所链接到的其他页面的信息。在没有触发页面跳转请求的情况下,执行下一个任务队列;然而dom元素属于解决该问题的必要信息,是难以回避的,可以通过配置只选取点击某些固定的标签类型来去掉多余的标签分析,缩减总体消耗的时间;根据这一原理,可以在200毫秒左右的时间以内获取到一个dom元素跳转到目标网页页面的链接地址,通过在200毫秒以内的时间之内将一个dom元素所包含的链接信息解析出来,比现有技术快了 25?50倍。
[0055]对整个原始网页页面的每个dom元素都触发点击事件,并把这一行为利用多条任务队列中执行,并在onNavigat1nRequested函数中监听跳转请求中所包含的统一资源定位器URL。以此来达到解析整个原始网页页面的捕获页面跳转请求的目标URL的目的。
[0056]例如,一个拥有一千个dom元素左右的原始网页页面,在本步骤中用10条任务队列的情况下,只需要20?40秒左右的时间即可解析完所有的dom元素,同样的情况传统方法在20?40秒只能解析2?8个dom元素。效率可谓大大提高。
[0057]具体地,步骤S142之后,该方法还包括:
[0058]S143,通过调用非新建窗口函数将原始网页页面重写为非新建窗口的形式,并改写原始网页页面的预设标签的目标属性为自适应形式,其中,非新建窗口函数和预设标签的目标属性用于将获取到的目标网页页面的链接地址显示在原始网页页面上。
[0059]在步骤S143中,将非新建窗口函数window, open重写为非新建窗口的形式,并且将所有的〈a>标签的target属性改为_self,以此保证onNavigat1nRequested可以完全捕获到跳转请求,还可以通过配置只选取点击某些固定的标签类型来去掉多余的标签分析,缩减总体消耗的时间。
[0060]本发明提出的一种网页页面链接地址的获取方法,通过加载原始网页页面,触发用于模拟原始网页页面发生跳转事件的点击事件,监听原始网页页面是否发生跳转事件,在监听到原始网页页面发生跳转事件的情况下,阻塞原始网页页面发生跳转,并截获原始网页页面的页面跳转请求,从页面跳转请求中读取原始网页页面所要跳转到的目标网页页面的链接地址,因此,本申请提供了一种高效地获取目标网页页面链接地址的方法,即在phantomjs中加载原始网页页面之后,通过触发用于模拟原始网页页面发生跳转事件的点击事件,对原始网页页面进行监听,当监听到原始网页页面发生跳转请求的情况下,阻止原始网页页面发生跳转以终止目标网页页面的加载,从而阻止加载多余的内容,不需要消耗过多的资源在多余的页面加载请求上,同时截获原始网页页面的跳转请求以读取目标网页页面的链接地址。由于上述方法中的在phantomjs中加载原始网页页面,不再请求多余的图片、多媒体等资源,加快了原始网页页面的加载速度,上述阻止原始网页页面发生跳转以终止目标网页页面的加载,并不需要消耗过的资源在多余的页面加载请求上,因此加快了最终获取目标网页页面链接地址的速度,进而解决了现有技术中获取网页页面链接地址效率差的问题,克服了一些js生成的链接难以被爬虫获取到的问题,达到了高效的获取网页页面链接地址的效果。本发明在多数情况下足以满足爬虫的需求,并节省了网络请求资源,能使获取目标网页页面的链接地址的效率提高一个档次,能够实现高效的获取网页页面链接地址。
[0061]实施例2
[0062]本发明实施例还提供了一种网页页面链接地址的获取装置,本申请上述实施例所提供的装置可以在计算机终端或移动终端上运行,但不限于此。
[0063]图2是根据本发明是实施例的网页页面链接地址的获取装置的结构示意图。如图2所示,该装置包括:第一加载模块21、点击模块22、截获模块23和读取模块24 ;
[0064]其中,第一加载模块21,用于加载原始网页页面;
[0065]具体地,在第一加载模块21中,加载原始网页页面是利用phantomjs构建一个浏览器平台,以此来对要分析的页面中的js来进行解析,phantomjs为开发人员提供了一组API,通过phantomjs构建一个浏览器平台,将原始网页页面加载进来,这样访问网页就省去了浏览器界面绘制所消耗的系统资源,所以不再请求多余的图片、多媒体等资源,力口快了原始网页页面的加载速度;上述原始网页页面为超文本标记语言html页面,在利用phantomjs构建的浏览器中加载html页面,并监听html页面是否发生跳转请求。
[0066]其中,点击模块22,用于触发用于模拟原始网页页面发生跳转事件的点击事件;
[0067]在上述点击模块22中,通过在phantomjs中触发用于模拟原始网页页面发生跳转事件的点击事件,使得在phantomjs中模拟点击行为,进一步使得新的网页页面易于被捕捉到,最终获取目标网页页面的链接地址。
[0068]截获模块23,连接至第一点击模块22,用于监听原始网页页面是否发生跳转事件,在监听到原始网页页面发生跳转事件的情况下,阻塞原始网页页面发生跳转,并截获原始网页页面的页面跳转请求;
[0069]具体地,在截获模块23中,原始网页页面为html页面,当html页面执行跳转指令时,监听到html页面发生跳转事件,阻塞html页面跳转至目标网页页面,终止目标网页页面的加载,并截获html页面的页面跳转请求;阻塞html页面跳转至目标网页页面可以阻止多余内容的加载,如此,不需要消耗过多的资源在多余的页面加载请求上。
[0070]读取模块24,连接至截获模块23,用于从页面跳转请求中读取原始网页页面所要跳转到的目标网页页面的链接地址。
[0071]具体地,在读取模块24中,原始网页页面为html页面,在html页面跳转请求中包含有原始网页页面所要跳转到的目标网页页面的链接地址,该链接地址为统一资源定位器URL ;所以,在截获html页面的页面跳转请求后,读取目标网页页面的链接地址URL,由于本装置是基于phantomjs的点击行为进行分析的,固可以非常完整地解析出网页中所包含的所有链接,不会受到js动态句法的干扰。
[0072]本申请上述实施例2的装置,提供了一种网页页面链接地址的获取装置,该装置通过第一加载模块21加载原始网页页面,通过点击模块22触发用于模拟原始网页页面发生跳转事件的点击事件,通过截获模块23截获原始网页页面的页面跳转请求,通过读取模块24读取原始网页页面所要跳转到的目标网页页面的链接地址,与现有技术相比,克服了一些js生成的链接难以被爬虫获取到的问题,达到了高效的获取网页页面链接地址的目的。
[0073]图3是根据本发明实施例的网页页面链接地址的获取装置的一种优选结构示意图,如图3所示,该装置包括图2所示的所有结构外,还包括:第二加载模块31,下面对该装置进行说明。
[0074]第二加载模块31,连接至第一加载模块21,用于加载原始网页页面之前,加载用于阻塞原始网页页面发生跳转的阻塞功能函数,并加载用于监听跳转事件以及捕获目标网页页面的链接地址的监控功能函数;其中,加载原始网页页面成功之后,启动阻塞功能函数。
[0075]在第二加载模块31中,是利用phantomjs构建一个浏览平台来加载用于阻塞原始网页页面发生跳转的阻塞功能函数,phantomjs为开发人员提供了一组API,通过phantomjs构建一个浏览器平台,将原始网页页面加载进来,这样访问网页就省去了浏览器界面绘制所消耗的系统资源,不再请求多余的图片、多媒体等资源,加快了加载阻塞功能函数和监听功能函数的速度;其中,利用phantomjs加载html页面,以此来对要分析的html页面中的js来进行解析,调用phantomjs中所提供的一组API,其中,包括:阻塞功能函数navigat1nLocked,用于阻塞原始网页页面发生跳转,在点击的链接发生跳转之前及时终止新网页的加载;还有包括监控功能函数onNavigat1nRequested,用于监听跳转事件以及捕获目标网页页面的链接地址,本方法利用phantomjs构建一个浏览平台、并调用phantomjs中阻塞功能函数和监听功能函数,比朴素的模拟点击更快更高效。并且消耗的网络资源更小。
[0076]图4是根据本发明实施例的网页页面链接地址的获取装置的另一种优选结构示意图;如图4所示,该装置包括图2所示的所有结构,其中,该点击模块22包括:创建单元41和触发单元42,下面对该装置进行说明。
[0077]创建模块41,用于通过调用创建事件函数创建原始网页页面中的文档对象模型dom元素的点击事件;
[0078]具体地,在创建单元41中,由于phantomjs并不内置点击事件,所以本步骤是通过创建事件函数createEvent来创建原始网页页面的dom元素的点击事件的,其中,创建每个dom元素的点击事件中,dom元素是本方法中必不可少的信息,因为在触发每个dom元素的点击事件后可以完整地获取到一个页面都链接到哪些其他网页。
[0079]触发单元42,连接至创建单元41,用于在监听原始网页页面是否发生跳转事件之前,通过调用调度事件函数触发原始网页页面的dom元素的点击事件。
[0080]具体地,在触发单元42中,通过调度事件函数dispatchEvent来对每个dom元素进行点击事件的触发,当一个dom元素被点击时,绝大多数情况下,都会在很短的时间内触发完毕所有的时间,这样,短时间内完成触发闭朴素的模拟点击更快更高效。
[0081]图5是根据本发明实施例的网页页面链接地址的获取装置的另一种优选结构示意图;如图5所示,该装置包括图2所示的所有结构,其中该截获模块23还包括:判断单元51和阻塞单元52,下面对该装置进行说明。
[0082]判断单元51,用于通过调用判断函数判断是否触发页面跳转请求;
[0083]在上述判断单元51中,在监听到原始网页页面中的dom元素的点击事件被触发之后,通过调用判断函数,判断是否也触发了页面跳转请求,例如,即如果一个dom元素被绑定的点击事件列表存在页面跳转事件,其将被迅速触发(约200毫秒以内),反之如果在这个时间内没有检测到有跳转事件被触发,则可以说该dom元素没有被绑定页面跳转事件。跳转事件被触发之后,则可以获取到跳转到的目标链接,即该页面所链接到的其他页面的信息。
[0084]阻塞单元52,连接至判断单元51,用于在判断结果为触发页面跳转请求的情况下,通过调用阻塞功能函数阻止加载页面跳转请求,使得阻塞原始网页页面发生跳转。
[0085]在上述阻塞单元52中,在判断结果为在短时间内已经触发了页面跳转请求的情况下,调用将阻塞功能函数navigat1nLocked,将navigat1nLocked置为true以阻止加载页面跳转请求,使得点击的链接发生跳转之前及时终止新网页的加载,阻塞原始网页页面跳转至目标网页页面可以阻止多余内容的加载,如此,不需要消耗过多的资源在多余的页面加载请求上。
[0086]图6是根据本发明实施例的网页页面链接地址的获取装置的另一种优选结构示意图;如图6所示,该装置包括图4所示的所有结构外,还包括:获取模块61,下面对该装置进行说明。
[0087]获取模块61,连接至点击模块22,用于在通过调用创建事件函数创建原始网页页面的dom元素的点击事件之前,通过调用获取函数获取原始网页页面的dom元素。
[0088]在上述获取模块61中,当执行当前任务队列时,首先,调用获取函数获取原始网页页面的dom元素,然后触发原始网页页面的dom元素的点击事件,进而判断是否也触发了页面跳转请求,跳转事件被触发之后,则可以获取到跳转到的目标网页页面的链接地址,即该原始网页页面所链接到的其他页面的信息。在没有触发页面跳转请求的情况下,执行下一个任务队列;然而dom元素属于解决该问题的必要信息,是难以回避的,可以通过配置只选取点击某些固定的标签类型来去掉多余的标签分析,缩减总体消耗的时间;根据这一原理,可以在200毫秒左右的时间以内获取到一个dom元素跳转到目标网页页面的链接地址,通过在200毫秒以内的时间之内将一个dom元素所包含的链接信息解析出来,比现有技术快了 25?50倍。
[0089]对整个网页的每个dom元素都触发点击事件,并把这一行为利用多条任务队列中执行,并在onNavigat1nRequested函数中监听跳转请求中所包含的统一资源定位器URL。以此来达到解析整个网页的捕获页面跳转请求的目标URL的目的。
[0090]例如,一个拥有一千个dom元素左右的原始网页页面,在本步骤中创建10条任务队列的情况下,只需要20?40秒左右的时间即可解析完所有的dom元素,同样的情况传统装置中在20?40秒只能解析2?8个dom元素。效率可谓大大提高。
[0091]图7是根据本发明实施例的网页页面链接地址的获取装置的另一种优选结构示意图,如图7所示,该装置包括图4所示的所有结构外,该截获模块23还包括:调用单元71,下面对该装置进行说明。
[0092]调用单元71,连接至创建单元41,用于在通过调用创建事件函数创建原始网页页面的dom元素的点击事件之后,通过调用非新建窗口函数将原始网页页面重写为非新建窗口的形式,并改写原始网页页面的预设标签的目标属性为自适应形式,其中,非新建窗口函数和预设标签的目标属性用于将获取到的目标网页页面的链接地址显示在原始网页页面上。
[0093]在上述调用模块71中,将非新建窗口函数window, open重写为非新建窗口的形式,并且将所有的〈a>标签的target属性改为_self,以此保证onNavigat1nRequested可以完全捕获到跳转请求,还可以通过配置只选取点击某些固定的标签类型来去掉多余的标签分析,缩减总体消耗的时间。
[0094]本发明提出的一种网页页面链接地址的获取装置,通过第一加载模块21加载原始网页页面,通过点击模块22触发用于模拟原始网页页面发生跳转事件的点击事件,通过截获模块23监听原始网页页面是否发生跳转事件,在监听到原始网页页面发生跳转事件的情况下,阻塞原始网页页面发生跳转,并截获原始网页页面的页面跳转请求,通过读取模块24从页面跳转请求中读取原始网页页面所要跳转到的目标网页页面的链接地址,因此,本申请提供了一种高效地获取目标网页页面链接地址的装置,该装置在浏览器上加载原始网页页面之后,通过触发用于模拟原始网页页面发生跳转事件的点击事件,对原始网页页面进行监听,当监听到原始网页页面发生跳转请求的情况下,阻止原始网页页面发生跳转以终止目标网页页面的加载,从而阻止加载多余的内容,不需要消耗过多的资源在多余的页面加载请求上,同时截获原始网页页面的跳转请求以读取目标网页页面的链接地址。由于上述装置中利用phantomjs构建一个浏览平台加载原始网页页面,不再请求多余的图片、多媒体等资源,加快了原始网页页面的加载速度,上述阻止原始网页页面发生跳转以终止目标网页页面的加载,并不需要消耗过的资源在多余的页面加载请求上,因此加快了最终获取目标网页页面链接地址的速度,进而解决了现有技术中获取网页页面链接地址效率差的问题,克服了一些js生成的链接难以被爬虫获取到的问题,达到了高效的获取网页页面链接地址的效果。本发明在多数情况下足以满足爬虫的需求,并节省了网络请求资源,能使获取目标网页页面的链接地址的效率提高一个档次,能够实现高效的获取网页页面链接地址。
[0095]需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。
[0096]在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
[0097]在本申请所提供的几个实施例中,应该理解到,所揭露的装置,可通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性或其它的形式。
[0098]所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0099]另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
[0100]所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、移动终端、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM, Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
[0101]以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
【权利要求】
1.一种网页页面链接地址的获取方法,其特征在于,包括: 加载原始网页页面; 触发用于模拟所述原始网页页面发生跳转事件的点击事件; 监听所述原始网页页面是否发生所述跳转事件,在监听到所述原始网页页面发生所述跳转事件的情况下,阻塞所述原始网页页面发生跳转,并截获所述原始网页页面的页面跳转请求; 从所述页面跳转请求中读取所述原始网页页面所要跳转到的目标网页页面的链接地址。
2.根据权利要求1所述的方法,其特征在于,在加载原始网页页面之前,所述方法还包括: 加载用于阻塞所述原始网页页面发生跳转的阻塞功能函数,并加载用于监听所述跳转事件以及捕获所述目标网页页面的链接地址的监控功能函数; 其中,在加载所述原始网页页面成功之后,启动所述阻塞功能函数。
3.根据权利要求1所述的方法,其特征在于,触发用于模拟所述原始网页页面发生跳转事件的点击事件包括: 通过调用创建事件函数创建所述原始网页页面的文档对象模型如!!!元素的点击事件; 通过调用调度事件函数触发所述原始网页页面的如!!!元素的点击事件。
4.根据权利要求1所述的方法,其特征在于,在监听到所述原始网页页面发生所述跳转事件的情况下,阻塞所述原始网页页面发生跳转的步骤包括: 通过调用判断函数判断是否触发所述原始网页页面的页面跳转请求; 在判断结果为触发所述页面跳转请求的情况下,通过调用所述阻塞功能函数阻止加载所述页面跳转请求,使得阻塞所述原始网页页面发生跳转。
5.根据权利要求3所述的方法,其特征在于,在通过调用创建事件函数创建所述原始网页页面的文档对象模型如!!!元素的点击事件之前,所述方法还包括: 通过调用获取函数获取所述原始网页页面的如!!!元素。
6.根据权利要求3所述的方法,其特征在于,在通过调用创建事件函数创建所述原始网页页面的文档对象模型如!!!元素的点击事件之后,所述方法还包括: 通过调用非新建窗口函数将所述原始网页页面重写为非新建窗口的形式,并改写所述原始网页页面的预设标签的目标属性为自适应形式,其中,所述非新建窗口函数和所述预设标签的目标属性用于将获取到的所述目标网页页面的链接地址显示在所述原始网页页面上。
7.—种网页页面链接地址的获取装置,其特征在于,包括: 第一加载模块,用于加载原始网页页面; 点击模块,用于触发用于模拟所述原始网页页面发生跳转事件的点击事件; 截获模块,用于监听所述原始网页页面是否发生所述跳转事件,在监听到所述原始网页页面发生所述跳转事件的情况下,阻塞所述原始网页页面发生跳转,并截获所述原始网页页面的页面跳转请求; 读取模块,用于从所述页面跳转请求中读取所述原始网页页面所要跳转到的目标网页页面的链接地址。
8.根据权利要求7所述的装置,其特征在于,所述装置还包括: 第二加载模块,用于在加载原始网页页面之前,加载用于阻塞所述原始网页页面发生跳转的阻塞功能函数,并加载用于监听所述跳转事件以及捕获所述目标网页页面的链接地址的监控功能函数; 其中,在加载所述原始网页页面成功之后,启动所述阻塞功能函数。
9.根据权利要求7所述的装置,其特征在于,所述点击模块包括: 创建单元,用于通过调用创建事件函数创建所述原始网页页面的文档对象模型如!!!元素的点击事件; 触发单元,用于通过调用调度事件函数触发所述原始网页页面的(10111元素的点击事件。
10.根据权利要求7所述的装置,其特征在于,所述截获模块包括: 判断单元,用于通过调用判断函数判断是否触发所述原始网页页面的页面跳转请求;阻塞单元,用于在判断结果为触发所述页面跳转请求的情况下,通过调用所述阻塞功能函数阻止加载所述页面跳转请求,使得阻塞所述原始网页页面发生跳转。
11.根据权利要求9所述的装置,其特征在于,所述装置还包括: 获取模块,用于在通过调用创建事件函数创建所述原始网页页面的如!!!元素的点击事件之前,通过调用获取函数获取所述原始网页页面的(10111元素。
12.根据权利要求9所述的装置,其特征在于,所述点击模块还包括: 调用单元,用于在通过调用创建事件函数创建所述原始网页页面的(10111元素的点击事件之后,通过调用非新建窗口函数将所述原始网页页面重写为非新建窗口的形式,并改写所述原始网页页面的预设标签的目标属性为自适应形式,其中,所述非新建窗口函数和所述预设标签的目标属性用于将获取到的所述目标网页页面的链接地址显示在所述原始网页页面上。
【文档编号】G06F17/30GK104408204SQ201410802023
【公开日】2015年3月11日 申请日期:2014年12月18日 优先权日:2014年12月18日
【发明者】李浛天 申请人:北京国双科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1