与提取模块520相耦合,适于根据所有节点检测页面是否包含新链接;
[0092]添加模块550,与检测模块540相耦合,适于当检测结果为是,获取新链接,并添加至待爬虫库,以供后续执行页面检测使用。
[0093]图6示出了根据本发明一个优选实施例的页面检测客户端的结构示意图。参见图6,本发明实施例的页面检测客户端还包括:提取模块520,还适于提取所有节点中的所有动态节点,其中,动态节点包括HTML节点;获取模块530,还适于获取与所有动态节点一一对应的属性值;检测模块540,还适于根据属性值检测所有动态节点中是否包含新链接;确定模块560,与检测模块540相耦合,适于若是,则页面包含新链接;以及,若否,则页面不包含新链接。
[0094]在一个优选的实施例中,检测模块540还适于:根据属性值获取所有动态节点包含的所有事件,并保存至事件库;遍历事件库,依次触发事件库中的任一事件;判断触发操作是否生成新链接;若是,则所有动态节点中包含新链接;若否,则所有动态节点中不包含新链接。
[0095]在一个优选的实施例中,检测模块540还适于:根据事件的类型选择相应的函数来触发事件。
[0096]在一个优选的实施例中,检测模块540还适于:若事件的类型为鼠标单击事件,调用由Chrome浏览器的WebKit::WebElement提供的鼠标单击函数来触发鼠标单击事件。
[0097]在一个优选的实施例中,检测模块540还包括:提取单元541,适于提取属性值中任一属性值;判断单元542,适于根据任一属性值判断与其对应的动态节点中是否包含事件;处理单元543,适于若是,保存事件至事件库,并处罚提取单元重复提取操作以及后续操作,直至保存所有动态节点包含的所有事件至事件库;若否,直接处罚提取单元重复提取操作以及后续操作,直至保存所有动态节点包含的所有事件至事件库。
[0098]在一个优选的实施例中,判断单元542还适于:通过调用Chrome浏览器的WebCore::EventTarget::hasEventListeners ()函数判断与任一属性值对应的动态节点是否包含事件。
[0099]在一个优选的实施例中,本发明实施例的页面检测客户端还包括:获取模块530,还适于获取与所有动态节点一一对应的链接;检测模块540,还适于判断对应的链接是否为新链接;添加模块550,还适于若是,添加新链接至待爬虫库,以供后续执行页面检测使用。
[0100]在一个优选的实施例中,本发明实施例的页面检测客户端还包括:删除模块570,适于获取模块获取与任一链接对应的页面之后,在待爬虫库中删除任一链接。
[0101]根据上述任意一个优选实施例或多个优选实施例的组合,本发明实施例能够达到如下有益效果:
[0102]依据本发明实施例提供的页面检测方法,能够在针对网络进行旁路侦听的过程中抓取数据请求包,确定数据请求包对应的链接是否为新链接。当确定数据请求包对应的链接为新链接,则利用对应的链接生成待爬虫库。生成待爬虫库之后,提取待爬虫库中的任一链接,并获取与任一链接对应的页面,提取页面的所有节点,根据所有节点检测页面是否包含新链接,当检测结果为是,获取新链接,添加至待爬虫库,以供后续执行页面检测使用,解决了现有技术中不能够自动获取和/或触发网页里的事件的问题。依据本发明实施例提供的页面检测方法,能够针对待爬虫库中的任一链接,判断该链接对应的页面中是否包含新链接,达到自动抓取基于第二代互联网制作相关内容的网站的链接,完善爬虫操作效果的有益效果。
[0103]本发明的实施例还公开了:
[0104]Al.—种页面检测方法,包括:
[0105]在针对网络进行旁路侦听的过程中抓取数据请求包,其中,所述数据请求包至少包括超文本传输协议请求包;
[0106]确定所述数据请求包对应的链接是否为新链接,其中,所述新链接为链接库中未保存的链接;
[0107]若是,利用所述对应的链接生成待爬虫库;
[0108]提取所述待爬虫库中的任一链接:
[0109]获取与所述任一链接对应的页面;
[0110]提取所述页面的所有节点;
[0111]根据所述所有节点检测所述页面是否包含所述新链接;
[0112]当检测结果为是,获取所述新链接,并添加至所述待爬虫库,以供后续执行页面检测使用。
[0113]A2.根据权利要求Al所述的方法,其中,根据所述所有节点检测所述页面是否包含所述新链接,包括:
[0114]提取所述所有节点中的所有动态节点,其中,所述动态节点包括HTML节点;
[0115]获取与所述所有动态节点一一对应的属性值;
[0116]根据所述属性值检测所述所有动态节点中是否包含新链接;
[0117]若是,则所述页面包含所述新链接;
[0118]若否,则所述页面不包含所述新链接。
[0119]A3.根据权利要求A2所述的方法,其中,根据所述属性值检测所述所有动态节点中是否包含新链接,包括:
[0120]根据所述属性值获取所述所有动态节点包含的所有事件,并保存至事件库;
[0121]遍历所述事件库,依次触发所述事件库中的任一事件;
[0122]判断所述触发操作是否生成所述新链接;
[0123]若是,则所述所有动态节点中包含所述新链接;
[0124]若否,则所述所有动态节点中不包含所述新链接。
[0125]A4.根据权利要求A3所述的方法,其中,依次触发所述事件库中的任一事件,包括:
[0126]根据事件的类型选择相应的函数来触发所述事件。
[0127]A5.根据权利要求A4所述的方法,其中,所述根据事件的类型选择相应的函数来触发所述事件,包括:
[0128]若所述事件的类型为鼠标单击事件,调用由Chrome浏览器的WebKit::WebElement提供的鼠标单击函数来触发所述鼠标单击事件。
[0129]A6.根据权利要求A3至A4任一项所述的方法,其中,根据所述属性值获取所述所有动态节点包含的所有事件,包括:
[0130]提取所述属性值中任一属性值;
[0131]根据所述任一属性值判断与其对应的动态节点中是否包含事件;
[0132]若是,保存所述事件至事件库,并重复所述提取操作以及所述判断操作,直至保存所述所有动态节点包含的所有事件至事件库;
[0133]若否,直接重复所述提取操作以及所述判断操作,直至保存所述所有动态节点包含的所有事件至事件库。
[0134]A7.根据权利要求A6所述的方法,其中,根据所述任一属性值判断与其对应的动态节点中是否包含事件,包括:
[0135]通过调用Chrome 浏览器的 WebCore::EventTarget::hasEventListeners ()函数判断与所述任一属性值对应的动态节点是否包含事件。
[0136]AS.根据权利要求A2至A7任一项所述的方法,其中,提取所述所有节点中的所有动态节点之后,还包括:
[0137]获取与所述所有动态节点一一对应的链接;
[0138]判断所述对应的链接是否为所述新链接;
[0139]若是,添加所述新链接至所述待爬虫库,以供后续执行页面检测使用。
[0140]A9.根据权利要求Al至A8任一项所述的方法,其中,获取与所述任一链接对应的页面之后,还包括:
[0141]在所述待爬虫库中删除所述任一链接。
[0142]本发明还公开了:
[0143]B10.—种页面检测客户端,包括:
[0144]生成模块,包括抓取单元、确定单元以及生成单元,其中,
[0145]所述抓取单元,适于在针对网络进行旁路侦听的过程中抓取数据请求包,其中,所述数据请求包至少包括超文本传输协议请求包;
[0146]所述确定单元,适于确定所述数据请求包对应的链接是否为新链接,其中,所述新链接为链接库中未保存的链接;
[0147]所述生成单元,适于若是,利用所述对应的链接生成待爬虫库;
[0148]提取模块,适于提取所述待爬虫库中的任一链接;
[0149]获取模块,适于获取与所述任一链接对应的页面;
[0150]所述提取模块,还适于提取所述页面的所有节点;
[0151]检测模块,适于根据所述所有节点检测所述页面是否包含所述新链接;
[0152]添加模块,适于当检测结果为是,获取所述新链接,并添加至所述待爬虫库,以供后续执行页面检测使用。
[0153]Bll.根据权利要求BlO所述的客户端,其中,还包括:
[0154]所述提取模块,还适于提取所述所有节点中的所有动态节点,其中,所述动态节点包括HTML节点;
[0155]所述获取模块,还适于获取与所述所有动态节点一一对应的属性值;
[0156]所述检测模块,还适于根据所述属性值检测所述所有动态节点中是否包含新链接;
[0157]确定模块,适于若是,则所述页面包含所述新链接;以及
[0158]若否,则所述页面不包含所述新链接。
[0159]B12.根据权利要求Bll所述的客户端,其中,所述检测模块还适于:
[0160]根据所述属性值获取所述所有动态节点包含的所有事件,并保存至事件库;
[0161]遍历所述事件库,依次触发所述事件库中的任一事件;
[0162]判断所述触发操作是否生成所述新链接;
[0163]若是,则所述所有动态节点中包含所述新链接;
[0164]若否,则所述所有动态节点中不包含所述新链接。
[0165]B13.根据权利要求B12所述的客户端,其中,所述检测模块还适于:
[0166]根据事件的类型选择相应的函数来触发所述事件。
[0167]B14.根据权利要求B13所述的客户端,其中,所述检测模块还适于:
[0168]若所述事件的类型为鼠标单击事件,调用由Chrome浏览器的WebKi