网页信息的提取方法、装置、设备及存储介质转让专利

申请号 : CN202110018216.0

文献号 : CN112732994B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 张学哲张浩波

申请人 : 上海携宁计算机科技股份有限公司

摘要 :

本发明公开了一种网页信息的提取方法、装置、设备及存储介质,以解决现有网页信息提取工作量大、维护困难、准确性低的问题。所述网页信息的提取方法包括:获取待提取网页中每一叶子节点的叶子节点路径;根据叶子节点路径,获取叶子节点路径对应的叶子节点的叶子节点信息和叶子节点的父节点的父节点信息,得到叶子节点的节点信息;根据每一叶子节点路径和每一节点信息,构建DOM树;对DOM树中的每一节点进行遍历,并利用预先训练获得的神经网络识别模型对遍历到的每一叶子节点进行分析,得到每一叶子节点的分析结果;根据每一叶子节点的分析结果,确定待提取信息的提取路径;根据提取路径,从待提取网页中提取待提取信息。

权利要求 :

1.一种网页信息的提取方法,其特征在于,包括:获取待提取网页中每一叶子节点的叶子节点路径;

根据所述叶子节点路径,获取所述叶子节点路径对应的所述叶子节点的叶子节点信息和所述叶子节点的父节点的父节点信息,得到所述叶子节点的节点信息;

其中,所述叶子节点的叶子节点信息包括:叶子节点的tag标签、叶子节点的class属性和叶子节点的文本长度;

其中,所述叶子节点的父节点的父节点信息包括:叶子节点对应的父节点的tag标签和叶子节点对应的父节点的class属性;

根据每一所述叶子节点路径和每一所述叶子节点的节点信息,构建文档对象模型DOM树;

所述根据每一所述叶子节点路径和每一所述叶子节点的节点信息,构建文档对象模型DOM树,包括:

根据每一所述叶子节点路径,构建DOM树框架;

将每一所述叶子节点的节点信息记录到所述DOM树框架中对应的所述叶子节点所在的位置,得到所述DOM树;

对所述DOM树中的每一节点进行遍历,并利用预先训练获得的神经网络识别模型对遍历到的每一所述叶子节点进行分析,得到每一所述叶子节点的分析结果;

根据每一所述叶子节点的所述分析结果,确定待提取信息的提取路径;

根据所述提取路径,从所述待提取网页中提取所述待提取信息。

2.根据权利要求1所述的网页信息的提取方法,其特征在于,所述获取待提取网页中每一叶子节点的叶子节点路径,包括:获取所述待提取网页的超文本标记语言HTML源码;

对所述HTML源码进行解析,得到所述待提取网页包括的所有节点的路径信息;

对所述路径信息去重,得到所述待提取网页中每一所述叶子节点的所述叶子节点路径。

3.根据权利要求1所述的网页信息的提取方法,其特征在于,所述对所述DOM树中的每一节点进行遍历,并利用预先训练获得的神经网络识别模型对遍历到的每一所述叶子节点进行分析,得到每一所述叶子节点的分析结果,包括:对所述DOM树中的每一节点进行遍历,并获取遍历到的每一所述叶子节点的节点信息;

按序将遍历到的每一所述叶子节点的节点信息输入预先训练获得的神经网络识别模型,并获取所述神经网络识别模型的输出结果,得到每一所述叶子节点的所述分析结果。

4.根据权利要求3所述的网页信息的提取方法,其特征在于,所述按序将遍历到的每一所述叶子节点的节点信息输入预先训练获得的神经网络识别模型,包括:对于遍历到的每一所述叶子节点的节点信息,分别对所述叶子节点的tag标签、所述叶子节点的class属性、所述叶子节点对应的父节点的tag标签和所述叶子节点对应的父节点的class属性进行向量转换,得到四个词向量;

按序将遍历到的每一所述叶子节点对应的四个词向量和所述叶子节点的本文长度输入预先训练获得的神经网络识别模型。

5.根据权利要求1所述的网页信息的提取方法,其特征在于,所述根据每一所述叶子节点的所述分析结果,确定待提取信息的提取路径,包括:根据每一所述叶子节点的所述分析结果,确定所述DOM树中需要保留的节点;

根据所述DOM树中需要保留的节点,确定待提取信息的提取路径。

6.根据权利要求5所述的网页信息的提取方法,其特征在于,所述根据每一所述叶子节点的所述分析结果,确定所述DOM树中需要保留的节点,包括:对于所述DOM树中的每一所述父节点,根据所述父节点下所有子节点的分析结果,确定所述父节点是否需要保留;

在所述DOM树中标记需要保留的所述父节点,并根据每一所述叶子节点的所述分析结果标记需要保留的所述叶子节点,得到所述DOM树中需要保留的节点。

7.根据权利要求5所述的网页信息的提取方法,其特征在于,所述根据所述DOM树中需要保留的节点,确定待提取信息的提取路径,包括:按照预设的遍历的方式对所述DOM树中需要保留的节点进行遍历,将遍历到的每一所述节点的tag标签按序添加到预先构建的存储介质,得到所述待提取信息的所述提取路径。

8.根据权利要求1至7任一项所述的网页信息的提取方法,其特征在于,在所述获取待提取网页中每一叶子节点的叶子节点路径之前,所述方法还包括:利用网络爬虫获取训练样本网页的HTML源码;

对所述训练样本网页的HTML源码进行解析,得到所述训练样本网页包括的所有节点的路径信息;

对所述路径信息去重,得到所述训练样本网页中每一叶子节点的叶子节点路径;

获取每一叶子节点路径中包括的所有节点的tag标签和class属性,并根据所有节点的tag标签构建tag词嵌入模型,根据所有节点的class属性构建class词嵌入模型;

从所述tag词嵌入模型中获取所述叶子节点的叶子节点tag词向量和所述叶子节点的父节点的父节点tag词向量,从所述class词嵌入模型获取所述叶子节点的叶子节点class词向量和所述叶子节点的父节点的父节点class词向量;

将所述叶子节点tag词向量和所述父节点tag词向量,所述叶子节点class词向量和所述父节点class词向量,以及所述叶子节点的文本长度作为训练参数,输入预先构建的神经网络训练模型进行迭代训练至所述神经网络训练模型满足预设收敛条件,得到所述神经网络识别模型。

9.根据权利要求8所述的网页信息的提取方法,其特征在于,所述神经网络训练模型为多层神经网络训练模型。

10.根据权利要求9所述的网页信息的提取方法,其特征在于,所述多层神经网络训练模型为三层前馈神经网络模型;

所述三层前馈神经网络模型包括一层输入层、一层隐藏层和一层输出层。

11.根据权利要求10所述的网页信息的提取方法,其特征在于,在对所述神经网络训练模型进行迭代训练的过程中,所述方法还包括:采用线性整流函数对所述输入层和所述隐藏层进行激活;

采用S型函数对所述输出层进行激活。

12.一种网页信息的提取装置,其特征在于,所述网页信息的提取装置包括:叶子节点路径获取模块,用于获取待提取网页中每一叶子节点的叶子节点路径;

节点信息获取模块,用于根据所述叶子节点路径,获取所述叶子节点路径对应的所述叶子节点的叶子节点信息和所述叶子节点的父节点的父节点信息,得到所述叶子节点的节点信息;其中,所述叶子节点的叶子节点信息包括:叶子节点的tag标签、叶子节点的class属性和叶子节点的文本长度;所述叶子节点的父节点的父节点信息包括:叶子节点对应的父节点的tag标签和叶子节点对应的父节点的class属性;

DOM树构建模块,用于根据每一所述叶子节点路径和每一所述叶子节点的节点信息,构建文档对象模型DOM树;其中,所述根据每一所述叶子节点路径和每一所述叶子节点的节点信息,构建文档对象模型DOM树,包括:根据每一所述叶子节点路径,构建DOM树框架;将每一所述叶子节点的节点信息记录到所述DOM树框架中对应的所述叶子节点所在的位置,得到所述DOM树;

叶子节点分析模块,用于对所述DOM树中的每一节点进行遍历,并利用预先训练获得的神经网络识别模型对遍历到的每一所述叶子节点进行分析,得到每一所述叶子节点的分析结果;

提取路径确定模块,用于根据每一所述叶子节点的所述分析结果,确定待提取信息的提取路径;

网页信息提取模块,用于根据所述提取路径,从所述待提取网页中提取所述待提取信息。

13.一种网页信息的提取设备,其特征在于,包括:至少一个处理器;以及,

与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行如权利要求1至11中任一项所述的网页信息的提取方法。

14.一种计算机可读存储介质,存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至11中任一项所述的网页信息的提取方法。

说明书 :

网页信息的提取方法、装置、设备及存储介质

技术领域

[0001] 本发明实施例涉及计算机网络技术领域,特别涉及一种网页信息的提取方法、装置、设备及存储介质。

背景技术

[0002] 对全球广域网(World Wide Web,Web)数据挖掘来说,网页中承载的信息的提取通常作为数据挖掘前期的基础步骤。因此,如何从网页中高效准确地提取出高质量的信息,成
为近年来研究的一个热点问题。
[0003] 现有技术中,对网页信息的提取,一种常见的方式是基于预设的规则进行提取,具体是基于预设的规则构建不同可扩展标记路径语言(Extensible Markup Language Path,
XPath),即XPath路径模板,进而通过不同的XPath路径模板去提取对应的网页中的正文;另
一种常见的方式是根据网页对应的超文本标记语言(Hyper Text Markup Language,HTML)
中的全部节点构建文档对象模型(Document Object Model,DOM),即全部节点的多叉树,进
而根据预先构建的节点分析模型,从多叉树的根节点开始分析,最终将分析得出的不需要
保留的节点,以及该节点下的所有节点的信息舍去,即剪枝,最终根据剪枝后的多叉树确定
正文提取路径,并根据确定的正文提取路径对网页进行正文提取。
[0004] 虽然,现有的这两种方式均可以实现对网页中正文的提取,但是面对海量的网页,基于预设的规则构建XPath路径模板的方式,由于没有统一的模板,就需要人工设定大量的
XPath模板,并且为了使XPath路径模板能够适用于对应的网页,就需要根据网页信息的变
动不停的修改,甚至重写模板,大大增加了人力成本,并且这种方式还会存在因为没有发现
网页改动而没有对XPath路径模板及时修改,导致最终提取的信息不准确,或者直接无法进
行信息提取;而对根据全部节点构建的多叉树进行正序(或者说前序)遍历,并利用预先构
建的节点分模型对遍历到的根节点进行分析的方式,由于需要对全部节点进行分析,因而
导致分析过程以及构建节点分析模型所需的节点信息量十分庞大,从而导致整个实现方案
需要消耗大量的计算资源、图形处理器(Graphics Processing Unit,GPU)GPU资源,更会导
致实现该方案的程序由于内存问题被系统杀死叫停,训练时间长、收敛慢的问题。
[0005] 除此之外,对于很多正文信息存在于叶子节点的网页,采用上述第二种方式,若节点分析模型将某个中间节点误判为无需保留的节点,经过剪枝后将会把原本需要保留的节
点去除,即原本需要保留的正文信息被去除,从而导致最终从网页中提取的正文存在不完
整、准确度低的问题。

发明内容

[0006] 本发明实施例的目的在于提供一种网页信息的提取方法、装置、设备及存储介质,旨在解决上述技术问题。
[0007] 为解决上述技术问题,本发明的实施例提供了一种网页信息的提取方法,包括以下步骤:
[0008] 获取待提取网页中每一叶子节点的叶子节点路径;
[0009] 根据所述叶子节点路径,获取所述叶子节点路径对应的所述叶子节点的叶子节点信息和所述叶子节点的父节点的父节点信息,得到所述叶子节点的节点信息;
[0010] 根据每一所述叶子节点路径和每一所述叶子节点的所述节点信息,构建文档对象模型DOM树;
[0011] 对所述DOM树中的每一节点进行遍历,并利用预先训练获得的神经网络识别模型对遍历到的每一所述叶子节点进行分析,得到每一所述叶子节点的所述分析结果;
[0012] 根据每一所述叶子节点的所述分析结果,确定待提取信息的提取路径;
[0013] 根据所述提取路径,从所述待提取网页中提取所述待提取信息。
[0014] 本发明的实施例还提供了一种网页信息的提取装置,包括:
[0015] 叶子节点路径获取模块,用于获取待提取网页中每一叶子节点的叶子节点路径;
[0016] 节点信息获取模块,用于根据所述叶子节点路径,获取所述叶子节点路径对应的所述叶子节点的叶子节点信息和所述叶子节点的父节点的父节点信息,得到所述叶子节点
的节点信息;
[0017] DOM树构建模块,用于根据每一所述叶子节点路径和每一所述叶子节点的所述节点信息,构建文档对象模型DOM树;
[0018] 叶子节点分析模块,用于对所述DOM树中的每一节点进行遍历,并利用预先训练获得的神经网络识别模型对遍历到的每一所述叶子节点进行分析,得到每一所述叶子节点的
所述分析结果;
[0019] 提取路径确定模块,用于根据每一所述叶子节点的所述分析结果,确定待提取信息的提取路径;
[0020] 网页信息提取模块,用于根据所述提取路径,从所述待提取网页中提取所述待提取信息。
[0021] 本发明的实施例还提供了一种网页信息的提取设备,包括:
[0022] 至少一个处理器;以及,
[0023] 与所述至少一个处理器通信连接的存储器;其中,
[0024] 所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行如上文所述的网页信息的提取方法。
[0025] 本发明的实施例还提供了一种计算机可读存储介质,存储有计算机程序,所述计算机程序被处理器执行时实现如上文所述的网页信息的提取方法。
[0026] 本发明实施例提供的网页信息的提取方法、装置、设备及存储介质,通过根据待提取网页中每一叶子节点的叶子节点路径和叶子节点的叶子节点信息,以及该叶子节点所属
父节点的父节点信息构建DOM树,从而使得构建的DOM树仅记录叶子节点,以及叶子节点所
属父节点的节点信息,相较于现有需利用待提取网页中全部节点的节点信息才可以构建
DOM树,进而进行网页信息提取的方案,大大降低了构建DOM树所需的节点信息数量,并且基
于该结构的DOM树,也大大降低了后续的计算量,以及对计算资源、GPU资源的消耗。
[0027] 此外,由于在实际应用中,待提取网页中的信息大多是在叶子节点内的,因而本发明实施例提供的网页信息的提取方法、装置、设备及存储介质,通过对DOM树中的每一节点
进行遍历,并利用预先训练获得的神经网络识别模型仅对遍历到的每一叶子节点进行分
析,进而根据每一叶子节点的分析结果确定待提取信息的提取路径,使得最终确定的提取
路径中包含了所有记录有网页信息的叶子节点,进而可以根据确定的提取路径从待提取网
页中提取出尽可能完整的待提取信息,从而解决了现有从根节点开始遍历剪枝导致将原本
需要保留的节点去除,使得最终提取的网页信息不完整、不准确的问题。
[0028] 此外,通过基于具有自学习功能、联想存储功能,以及高速寻找优化解能力的神经网络识别模型来分析确定DOM树中每一叶子节点的情况,从而可以基于同一神经网络识别
模型对同一类型的待提取网页进行信息提取,解决了现有对于每一不同路径的待提取网页
都需要构建专门的XPath路径模板导致的人力成本高,以及因为XPath路径模板无法自学习
适应待提取网页变换导致的信息提取不准确的问题。
[0029] 另外,所述获取待提取网页中每一叶子节点的叶子节点路径,包括:获取所述待提取网页的超文本标记语言HTML源码;对所述HTML源码进行解析,得到所述待提取网页包括
的所有节点的路径信息;对所述路径信息去重,得到所述待提取网页中每一所述叶子节点
的所述叶子节点路径。由于本发明的实施例中构建的DOM树只记录了叶子节点的节点信息,
因而在构建DOM树时只需要叶子节点路径即可,为了避免遍历全部的路径,本实施例通过对
路径信息去重,具体为对每条路径进行比较,从而无需对每条路径的每个节点进行遍历,即
无需获取全部节点的信息,从而大大减少了构建DOM树的工作量和节点信息的重复。
[0030] 另外,所述根据每一所述叶子节点路径和每一所述叶子节点的所述节点信息,构建文档对象模型DOM树,包括:根据每一所述叶子节点路径,构建DOM树框架;将每一所述叶
子节点的所述节点信息记录到所述DOM树框架中对应的所述叶子节点所在的位置,得到所
述DOM树。本发明的实施例中,构建的DOM树中虽然记录了待提取网页中所有的节点,但是却
仅记录了叶子节点的的节点信息,从而大大减小了构建DOM树所需的节点信息,使得基于该
方式构建的DOM树应用到网页信息提取时,能够大大降低对计算资源的消耗。
[0031] 另外,所述对所述DOM树中的每一节点进行遍历,并利用预先训练获得的神经网络识别模型对遍历到的每一所述叶子节点进行分析,得到每一所述叶子节点的所述分析结
果,包括:对所述DOM树中的每一节点进行遍历,并获取遍历到的每一所述叶子节点的所述
节点信息;按序将遍历到的每一所述叶子节点的所述节点信息输入预先训练获得的神经网
络识别模型,并获取所述神经网络识别模型的输出结果,得到每一所述叶子节点的所述分
析结果。本发明的实施例中,通过基于具有自学习功能、联想存储功能,以及高速寻找优化
解能力的神经网络识别模型来分析确定DOM树中每一叶子节点的情况,从而可以基于同一
神经网络识别模型对同一类型的待提取网页进行信息提取,解决了现有对于每一不同路径
的待提取网页都需要构建专门的XPath路径模板导致的人力成本高,以及因为XPath路径模
板无法自学习适应待提取网页变换导致的信息提取不准确的问题。
[0032] 另外,所述节点信息包括:叶子节点的tag标签、叶子节点的class属性、叶子节点的文本长度、叶子节点对应的父节点的tag标签和叶子节点对应的父节点的class属性;所
述按序将遍历到的每一所述叶子节点的所述节点信息输入预先训练获得的神经网络识别
模型,包括:对于遍历到的每一所述叶子节点的所述节点信息,分别对所述叶子节点的tag
标签、所述叶子节点的class属性、所述叶子节点对应的父节点的tag标签和所述叶子节点
对应的父节点的class属性进行向量转换,得到四个词向量;按序将遍历到的每一所述叶子
节点对应的四个词向量和所述叶子节点的本文长度输入预先训练获得的神经网络识别模
型。本发明的实施例,在利用神经网络识别模型对每一叶子节点的节点信息进行分析时,通
过将节点信息中的tag标签信息和class属性信息进行向量转换,进而得到准确性高的空间
向量表达,最终利用神经网络识别模型对空间向量表达进行分析,从而保证了神经网络识
别模型输出的分析结果的准确率。
[0033] 另外,所述根据每一所述叶子节点的所述分析结果,确定待提取信息的提取路径,包括:根据每一所述叶子节点的所述分析结果,确定所述DOM树中需要保留的节点;根据所
述DOM树中需要保留的节点,确定待提取信息的提取路径。本发明的实施例中,仅需利用神
经网络识别模型分析DOM树中的叶子节点,而其他节点是否保留则是根据叶子节点的分析
结果确定,从而无需对DOM树中的每一节点进行分析,也印证了无需为DOM树中除叶子节点
之外的其他节点添加节点信息,进一步降低了对计算资源的消耗。
[0034] 另外,所述根据每一所述叶子节点的所述分析结果,确定所述DOM树中需要保留的节点,包括:对于所述DOM树中的每一所述父节点,根据所述父节点下所有子节点的分析结
果,确定所述父节点是否需要保留;在所述DOM树中标记需要保留的所述父节点,并根据每
一所述叶子节点的所述分析结果标记需要保留的所述叶子节点,得到所述DOM树中需要保
留的节点。本发明的实施例中,给出了一种基于叶子节点的分析结果,确定DOM树中需要保
留的节点的具体方式,由于整个过程仅需根据每一个叶子节点的分析结果来确定,而无需
额外获取需要判断的节点的节点信息,大大简化了实现流程,进而降低了对计算资源、GPU
资源的消耗。
[0035] 另外,所述根据所述DOM树中需要保留的节点,确定待提取信息的提取路径,包括:按照预设的遍历的方式对所述DOM树中需要保留的节点进行遍历,将遍历到的每一所述节
点的tag标签按序添加到预先构建的存储介质,得到所述待提取信息的所述提取路径。
[0036] 另外,在所述获取待提取网页中每一叶子节点的叶子节点路径之前,所述方法还包括:利用网络爬虫获取训练样本网页的HTML源码;对所述训练样本网页的HTML源码进行
解析,得到所述训练样本网页包括的所有节点的路径信息;对所述路径信息去重,得到所述
训练样本网页中每一叶子节点的叶子节点路径;获取每一叶子节点路径中包括的所有节点
的tag标签和class属性,并根据所有节点的tag标签构建tag词嵌入模型,根据所有节点的
class属性构建class词嵌入模型;从所述tag词嵌入模型中获取所述叶子节点的叶子节点
tag词向量和所述叶子节点的父节点的父节点tag词向量,从所述class词嵌入模型获取所
述叶子节点的叶子节点class词向量和所述叶子节点的父节点的父节点class词向量;将所
述叶子节点tag词向量和所述父节点tag词向量,所述叶子节点class词向量和所述父节点
class词向量,以及所述叶子节点的文本长度作为训练参数,输入预先构建的神经网络训练
模型进行迭代训练至所述神经网络训练模型满足预设收敛条件,得到所述神经网络识别模
型。
[0037] 另外,所述神经网络训练模型为多层神经网络训练模型。
[0038] 另外,所述多层神经网络训练模型为三层前馈神经网络模型;所述三层前馈神经网络模型包括一层输入层、一层隐藏层和一层输出层。本发明的实施例通过采用三层前馈
神经网络模型作为训练神经网络识别模型所需的神经网络训练模型,在保证训练获得的神
经网络识别模型准确率的基础上,有效避免了网络过于复杂造成的过拟合现象,从而提升
了神经网络识别模型的鲁棒性。
[0039] 另外,在对所述神经网络训练模型进行迭代训练的过程中,所述方法还包括:采用线性整流函数对所述输入层和所述隐藏层进行激活;采用S型函数对所述输出层进行激活。
本发明的实施例,通过采用线性整流函数对神经网络训练模型中的输入层和隐藏层进行激
活,通过采用S型函数对神经网络训练模型中的输出层进行激活,从而有效降低了训练过程
中的计算难度和复杂度。

附图说明

[0040] 一个或多个实施例通过与之对应的附图中的图片进行示例性说明,这些示例性说明并不构成对实施例的限定,附图中具有相同参考数字标号的元件表示为类似的元件,除
非有特别申明,附图中的图不构成比例限制。
[0041] 图1是本发明第一实施例提供的网页信息的提取方法的流程图;
[0042] 图2是针对图1所示的网页信息的提取方法中涉及的DOM树的结构示意图;
[0043] 图3是针对图2所示的DOM树进行遍历的示意图;
[0044] 图4是本发明第二实施例提供的网页信息的提取方法的流程图;
[0045] 图5是本发明第三实施例的网页信息的提取装置的结构示意图;
[0046] 图6是本发明第四实施例的网页信息的提取设备的结构示意图。

具体实施方式

[0047] 为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合附图对本发明的各实施例进行详细的阐述。然而,本领域的普通技术人员可以理解,在本发明各实施例
中,为了使读者更好地理解本申请而提出了许多技术细节。但是,即使没有这些技术细节和
基于以下各实施例的种种变化和修改,也可以实现本申请所要求保护的技术方案。以下各
个实施例的划分是为了描述方便,不应对本发明的具体实现方式构成任何限定,各个实施
例在不矛盾的前提下可以相互结合相互引用。
[0048] 本发明的第一实施例涉及一种网页信息的提取方法,应用于网页信息的提取设备,在实际应用中,网页信息的提取设备例可以为客户端或者服务端。
[0049] 下面对本实施例的网页信息的提取方法的实现细节进行说明,以下内容仅为方便理解而提供的实现细节,并非实施本方案的必须。
[0050] 本实施例的具体流程如图1所示,具体包括以下步骤:
[0051] 步骤101,获取待提取网页中每一叶子节点的叶子节点路径。
[0052] 具体的说,在本实施例中,所述待提取网页为包括了标题、正文、来源、时间、广告、噪音、推荐等网页信息的Web网页。
[0053] 相应地,对包括上述内容的Web网页进行的网页信息提取操作,即为根据业务需要,从中提取标题、正文、来源、时间、广告、噪音、推荐中的任意一种或几种。
[0054] 此外,可理解的,由于在实际应用中,绝大多数网页信息都被记录在网页中的叶子节点内,而除叶子节点之外的节点,由于其包含的网页信息较少或不够明确,并且通常情况
下这些节点中的网页信息不存在明显的特征,信息模糊不清。
[0055] 基于这一特性,本实施例中提供的网页信息的提取方法,仅关注待提取网页中的叶子节点,从而既可以保证最终从待提取网页中提取的待提取信息的准确性,又可以降低
提取过程中对不相干节点的关注和处理,进而降低计算量,以及对计算资源、GPU资源的消
耗。
[0056] 此外,可理解的,由于本实施例中针对的是网页信息集中在叶子节点的Web网页,而这类待提取网页通常是基于HTML编译获得的,并且对于每一待提取网页的HTML源码,基
于HTML编译原理,会包含各种标签,并且每一标签都有对应的从属关系。因此,根据这种关
系便可以确定从根节点到每一叶子节点的路径,即叶子节点的路径。
[0057] 故而,在获取待提取网页中每一叶子节点的叶子节点路径时,具体是通过获取待提取网页的HTML源码,然后利用预设的解析工具,比如LXML库对HTML源码进行解析,进而得
到待提取网页中包括的所有节点的路径信息,然后从所述路径信息中提取叶子节点的叶子
节点路径。
[0058] 值得一提的是,为了减少构建DOM树的工作量和节点信息的重复,本实施例构建的DOM树只记录了叶子节点的节点信息,因而在构建DOM树时只需要叶子节点路径即可,为了
避免遍历全部的路径,本实施例通过对路径信息去重,具体为对每条路径进行比较,从而无
需对每条路径的每个节点进行遍历,即无需获取全部节点的信息,从而大大减少了构建DOM
树的工作量和节点信息的重复。
[0059] 关于上述所说从待提取网页中获取的所有节点的路径信息,具体是记录了各节点,如父节点、子节点和叶子节点之间关系的信息。
[0060] 因此,在路径信息记录了上述关系的情况下,便可以确定待提取网页中每一叶子节点的叶子节点路径。
[0061] 此外,可理解的,上述所说的LXML库,具体是一个HTML/XML的解析器,主要功能时如何解析和提取HTML/XML数据。故而,针对HTML源码,本实施例直接采用LXML库便可以快速
提取出待提取网页中包括的所有节点的路径信息。
[0062] 应当理解的是,上述示例仅是为了更好的理解本实施例的技术方案而列举的示例,不作为对本实施例的唯一限制。在实际应用中,本领域技术人员可以根据需要选择解析
HTML源码的解析工具,本实施例对此不做限制。
[0063] 此外,关于上述所说的待提取网页的HTML源码,在实际应用中,具体可以是利用网络爬虫直接获取到的。
[0064] 由于网络爬虫技术已经较为成熟,故而关于如何利用网络爬虫,获取待提取网页的HTML源码,本实施例不再赘述,本领域技术人员可以自行查阅相关资料实现。
[0065] 步骤102,根据所述叶子节点路径,获取所述叶子节点路径对应的所述叶子节点的叶子节点信息和所述叶子节点的父节点的父节点信息,得到所述叶子节点的节点信息。
[0066] 具体的说,在本实施例中,每一叶子节点的节点信息包括叶子节点自身的叶子节点信息和叶子节点的父节点的父节点信息。
[0067] 关于上述所说的叶子节点信息,在本实施例中,具体包括叶子节点的tag标签、叶子节点的class属性和叶子节点的文本长度。
[0068] 相应地,父节点信息,在本实施例中,具体包括父节点的tag标签、父节点的class属性。
[0069] 步骤103,根据每一所述叶子节点路径和每一所述叶子节点的所述节点信息,构建文档对象模型DOM树。
[0070] 具体的说,本实施例中构建的DOM树,是先根据每一叶子节点路径构建DOM树框架,即仅包括叶子节点路径中涉及的节点的DOM树框架,但不包括节点的相关信息;然后将每一
节点信息记录到DOM树框架中对应叶子节点所在的位置,进而得到仅记录了叶子节点的节
点信息的DOM树。
[0071] 为了更好的理解步骤101至103中的操作,以下结合图2进行说明:
[0072] 假设待提取网页中包括图2所示的A至#这27个节点,并且根据这27个节点之间的关系,即路径信息,可以确定节点P、Q、R、H、S、T、J、U、V、W、L、X、Y、Z、#和O为叶子节点。
[0073] 对于上述16个叶子节点各自对应的叶子节点路径,分别为:
[0074] 叶子节点P的叶子节点路径:A—>B—>G—>P;叶子节点Q的叶子节点路径:A—>B—>G—>Q;叶子节点R的叶子节点路径:A—>B—>G—>R;叶子节点H的叶子节点路径:A—>B—>
H;叶子节点S的叶子节点路径:A—>C—>I—>S;叶子节点T的叶子节点路径:A—>C—>I—>
T;叶子节点J的叶子节点路径:A—>C—>J;叶子节点U的叶子节点路径:A—>D—>K—>U;叶
子节点V的叶子节点路径:A—>D—>K—>V;叶子节点W的叶子节点路径:A—>D—>K—>W;叶
子节点L的叶子节点路径:A—>E—>L;叶子节点X的叶子节点路径:A—>E—>M—>X;叶子节
点Y的叶子节点路径:A—>F—>N—>Y;叶子节点Z的叶子节点路径:A—>F—>N—>Z;叶子节
点#的叶子节点路径:A—>F—>N—>#;叶子节点O的叶子节点路径:A—>F—>O。
[0075] 相应地,在基于上述16条叶子节点路径,便可以构建出一个包括待提取网页中所有节点的DOM树框架。
[0076] 接着,在图2所示的DOM树框架中,包括的P、Q、R、H、S、T、J、U、V、W、L、X、Y、Z、#和O这16个叶子节点处,分别映射对应的节点信息即可得到本实施例中所述的DOM树。
[0077] 步骤104,对所述DOM树中的每一节点进行遍历,并利用预先训练获得的神经网络识别模型对遍历到的每一所述叶子节点进行分析,得到每一所述叶子节点的所述分析结
果。
[0078] 具体的说,由于现有给出的正序(或者说前序)遍历方式是先遍历DOM树中的根节点或者子节点,然后直接利用预先获得的识别模型对根节点或子节点进行分析,进而根据
分析结果确定是否对当前节点及其下的所有节点进行删除,即剪枝,然后将最终剪枝剩余
的节点作为提取网页信息的节点,因而一旦这些父节点(根节点或子节点)被误判为不需要
保留,就会面临着其下连接的所有节点都被剪枝,进而导致最终提取的网页信息不够完整、
准确,更甚者会导致提取的网页信息出现空文本的现象。
[0079] 再者,现有确定提取路径的方式,对于遍历到的除叶子节点的节点是否保留的判断,需要依赖当前遍历到的节点的节点信息、当前节点的子节点的节点信息和当前节点的
父节点的节点信息,这就导致整个判断过程需要涉及大量的节点信息,从而导致实际应用
过程中需要消耗大量的计算资源,GPU资源。
[0080] 除此之外,由于现有的方案是利用预先训练获得的识别模型确定每一个节点去留情况,因而在构建识别模型时,对于每一节点,就需要涉及当前节点的节点信息、当前节点
的子节点的节点信息和当前节点的父节点的节点信息,这样不仅导致了数据量的庞大,还
会导致训练时间变长,更甚者会导致程序经常由于内存问题被系统杀死叫停、收敛慢。
[0081] 基于此,本实施例构建了仅需要叶子节点的DOM树,并且基于本实施例中构建的DOM树的结构,即仅在叶子节点处记录了叶子节点自身的叶子节点信息和与叶子节点相关
的父节点的父节点信息,本实施例在对DOM树中的每一节点进行遍历时,具体是采用后序遍
历的方式。
[0082] 进一步地,在实际应用中,也可以先遍历DOM树中的所有叶子节点,然后利用预先训练获得的神经网络识别模型对遍历到的每一叶子节点进行分析,最后根据属于同一节点
下的子节点的分析结果确定该节点是否需要保留,从而确保了记录有大量网页信息的叶子
节点能够被保留,进而保证最终提取的网页信息的完整性和准确性。
[0083] 此外,关于步骤104中所说的操作,在实际应用中,具体为按照后序遍历的方式对DOM树中的每一节点进行遍历,并获取遍历到的每一叶子节点的节点信息,即上述所说的叶
子节点的tag标签、叶子节点的class属性、叶子节点的文本长度、叶子节点对应的父节点的
tag标签和叶子节点对应的父节点的class属性;然后,按序将遍历到的每一叶子节点的节
点信息输入预先训练获得的神经网络识别模型,即将上述5种信息作为输入参数,输入到神
经网络识别模型,由神经网络识别模型进行分析后,将神经网络识别模型的输出结果作为
对应叶子节点的分析结果。
[0084] 可理解的,上述通过神经网络识别模型获得的每一叶子节点的分析结果,在本实施例中具体用来标识当前叶子节点是否需要保留。
[0085] 即,在实际应用中,分析结果中的内容可以直接为保留,或者不保留。
[0086] 也可以是预设的标识保留的字符,比如用“true”标识当前叶子节点为需要保留的叶子节点,“false”则为不需要保留的叶子节点。
[0087] 除此之外,在实际应用中,还可以设置经神经网络识别模型输出的分析结果不为空,或者不为0时,则表示当前叶子节点为需要保留的叶子节点,反之则为不需要保留的叶
子节点。
[0088] 应当理解的是,上述示例仅是为了更好的理解本实施例的技术方案而列举的示例,不作为对本实施例的唯一限制。
[0089] 此外,值得一提的是,由于每一叶子节点对应的节点信息中的叶子节点的tag标签、叶子节点的class属性、父节点的tag标签和父节点的class属性,是处于不同空间的向
量,因而便于神经网络识别模型的识别,在按序将遍历到的每一节点信息输入预先训练获
得的神经网络识别模型时,对于遍历到的每一叶子节点的节点信息,需要先分别对节点信
息中的叶子节点的tag标签、叶子节点的class属性、父节点的tag标签和父节点的class属
性进行向量转换,进而得到4个空间词向量;然后才按序将遍历到的每一叶子节点的对应的
这4个空间词向量和叶子节点的文本长度作出输入参数,输入预先训练获得的神经网络识
别模型,从而使得神经网络识别模型能够快速精准的确定每一叶子节点是否需要保留。
[0090] 可理解的,在实际应用中,为了快速、准确的实现对上述4个信息进行向量转换,可以预先构建对应的模型,进而在需要对上述4个信息进行向量转换时,直接将其输入对应的
模型进行处理,便可得到满足要求的词向量。
[0091] 关于进行向量转换的模型的构建,在实际应用中可以通过Python中常用的一个爬虫利器,Beautiful Soup对爬虫获取的大量训练样本网页的HTML源码进行解析,进而提取
出每一叶子节点路径中包括的所有节点的tag标签和class属性。
[0092] 然后,采用类似word2vec(word to vector,一群用来产生词向量的相关模型)的跳字模型(skip‑gram)的方式,根据所有节点的tag标签构建tag词嵌入模型,根据所有节点
的class属性构建class词嵌入模型。
[0093] 进而,在按序将遍历到的每一叶子节点的节点信息输入预先训练获得的神经网络识别模型时,直接将当前需要输入神经网络识别模型的叶子节点的节点信息中的叶子节点
的tag标签和父节点的tag标签输入tag词嵌入模型,将叶子节点的class属性和父节点的
class属性输入class词嵌入模型,从而得到tag词嵌入模型输出的叶子节点tag词向量和父
节点tag词向量,class词嵌入模型输出的叶子节点class词向量和父节点class词向量。
[0094] 最终,将节点信息中的叶子节点的文本长度和得到的上述4个词向量作为输入参数,输入预先训练获得的神经网络识别模型即可。
[0095] 为了更好的理解步骤104中后序遍历图2所示的DOM树的顺序,以下结合图2和图3进行说明:
[0096] 可理解的,图3是在图2所示的DOM树的基础上,对DOM树中节点进行遍历的顺序的标注,即在实际应用中,遍历顺序是按照图3中标注的数字由小到大进行遍历,先1再2...。
[0097] 应当注意的是,由于本实施例仅需要判断叶子节点,故而在对图2所示的DOM树按照后序的方式进行遍历时,具体是遍历的DOM树中的节点。故而,遍历顺序实质是图3中标注
的1、2、3、4、5、6、7、8、9、10、11、12、13、14、15、16、17、18、19、20、21、22、23、24、25、26和27,即
图2中的P、Q、R、G、H、B、S、T、I、J、C、U、V、W、K、D、L、X、M、E、Y、Z、#、N、O、F和A。
[0098] 结合图2和图3可知,在执行步骤104中的操作时,具体是先遍历叶子节点P,并将叶子节点P的节点信息输入神经网络识别模型进行分析,确定叶子节点P是否需要保留;接着
遍历叶子节点Q,并将叶子节点Q的节点信息输入神经网络识别模型进行分析,确定叶子节
点Q是否需要保留;接着遍历叶子节点R,并将叶子节点R的节点信息输入神经网络识别模型
进行分析,确定叶子节点R是否需要保留;接着遍历节点G,并根据叶子节点P、Q和R的分析结
果,确定节点G是否需要保留;接着遍历叶子节点H,并将叶子节点H的节点信息输入神经网
络识别模型进行分析,确定叶子节点H是否需要保留;接着遍历节点B,并根据节点G和叶子
节点H的分析结果,确定节点B是否需要保留;接着遍历叶子节点S,并将叶子节点S的节点信
息输入神经网络识别模型进行分析,确定叶子节点S是否需要保留;接着遍历叶子节点T,并
将叶子节点T的节点信息输入神经网络识别模型进行分析,确定叶子节点T是否需要保留;
接着遍历节点I,并根据叶子节点S和T的分析结果,确定节点I是否需要保留;接着遍历叶子
节点J,并将叶子节点J的节点信息输入神经网络识别模型进行分析,确定叶子节点J是否需
要保留;接着遍历节点C,并根据节点I和叶子节点J的分析结果,确定节点C是否需要保留;
接着遍历叶子节点U,并将叶子节点U的节点信息输入神经网络识别模型进行分析,确定叶
子节点U是否需要保留;接着遍历叶子节点V,并将叶子节点V的节点信息输入神经网络识别
模型进行分析,确定叶子节点V是否需要保留;接着遍历叶子节点W,并将叶子节点W的节点
信息输入神经网络识别模型进行分析,确定叶子节点W是否需要保留;接着遍历节点K,并根
据叶子节点U、V和W的分析结果,确定节点K是否需要保留;接着遍历节点D,并根据节点K的
分析结果确定节点D是否需要保留;接着遍历叶子节点L,并将叶子节点L的节点信息输入神
经网络识别模型进行分析,确定叶子节点L是否需要保留;接着遍历叶子节点X,并将叶子节
点X的节点信息输入神经网络识别模型进行分析,确定叶子节点X是否需要保留;接着遍历
节点M,并根据节点X的分析结果确定节点M是否需要保留;接着遍历节点E,并根据叶子节点
L和节点M的分析结果,确定节点E是否需要保留;接着遍历叶子节点Y,并将叶子节点Y的节
点信息输入神经网络识别模型进行分析,确定叶子节点Y是否需要保留;接着遍历叶子节点
Z,并将叶子节点Z的节点信息输入神经网络识别模型进行分析,确定叶子节点Z是否需要保
留;接着遍历叶子节点#,并将叶子节点#的节点信息输入神经网络识别模型进行分析,确定
叶子节点#是否需要保留;接着遍历节点N,并根据叶子节点Y、Z和#的分析结果,确定节点N
是否需要保留;接着遍历叶子节点O,并将叶子节点O的节点信息输入神经网络识别模型进
行分析,确定叶子节点O是否需要保留;接着遍历节点F,并根据节点N和节点O的分析结果,
确定节点F是否需要保留;最后根据节点B、C、D、E和F的分析结果,确定节点A是否需要保留。
[0099] 此外,在实际应用中,对DOM树中每一节点的遍历过程也可以是先遍历DOM树中的所有叶子节点,在根据叶子节点的分析结果确定DOM树中其他的节点是否需要保留。
[0100] 即,遍历顺序实质是图3中标注的1、2、3、5、7、8、10、12、13、14、17、18、21、22、23和25,即图2中的P、Q、R、H、S、T、J、U、V、W、L、X、Y、Z、#和O。
[0101] 结合图2和图3可知,在执行步骤104中的操作时,具体是先遍历叶子节点P,并将叶子节点P的节点信息输入神经网络识别模型进行分析,确定叶子节点P是否需要保留;接着
遍历叶子节点Q,并将叶子节点Q的节点信息输入神经网络识别模型进行分析,确定叶子节
点Q是否需要保留;接着遍历叶子节点R,并将叶子节点R的节点信息输入神经网络识别模型
进行分析,确定叶子节点R是否需要保留;接着遍历叶子节点H,并将叶子节点Q的节点信息
输入神经网络识别模型进行分析,确定叶子节点H是否需要保留;接着遍历叶子节点S,并将
叶子节点S的节点信息输入神经网络识别模型进行分析,确定叶子节点S是否需要保留;接
着遍历叶子节点T,并将叶子节点T的节点信息输入神经网络识别模型进行分析,确定叶子
节点T是否需要保留;接着遍历叶子节点J,并将叶子节点J的节点信息输入神经网络识别模
型进行分析,确定叶子节点J是否需要保留;接着遍历叶子节点U,并将叶子节点U的节点信
息输入神经网络识别模型进行分析,确定叶子节点U是否需要保留;接着遍历叶子节点V,并
将叶子节点V的节点信息输入神经网络识别模型进行分析,确定叶子节点V是否需要保留;
接着遍历叶子节点W,并将叶子节点W的节点信息输入神经网络识别模型进行分析,确定叶
子节点W是否需要保留;接着遍历叶子节点L,并将叶子节点L的节点信息输入神经网络识别
模型进行分析,确定叶子节点L是否需要保留;接着遍历叶子节点X,并将叶子节点X的节点
信息输入神经网络识别模型进行分析,确定叶子节点X是否需要保留;接着遍历叶子节点Y,
并将叶子节点Y的节点信息输入神经网络识别模型进行分析,确定叶子节点Y是否需要保
留;接着遍历叶子节点Z,并将叶子节点Z的节点信息输入神经网络识别模型进行分析,确定
叶子节点Z是否需要保留;接着遍历叶子节点#,并将叶子节点#的节点信息输入神经网络识
别模型进行分析,确定叶子节点#是否需要保留;接着遍历叶子节点O,并将叶子节点O的节
点信息输入神经网络识别模型进行分析,确定叶子节点O是否需要保留。
[0102] 然后,基于叶子节点P、Q和R定位节点G,进而根据叶子节点P、Q和R的分析结果确定节点G是否需要保留;基于节点G和叶子节点H定位节点B,进而根据节点G和叶子节点H的分
析结果确定节点B是否需要保留。
[0103] 同理,基于叶子节点S和叶子节点T定位节点I,进而根据叶子节点S和叶子节点T的分析结果确定节点I是否需要保留;基于节点I和叶子节点J定位节点C,进而根据节点I和叶
子节点J的分析结果确定节点C是否需要保留;基于叶子节点U、V和W定位节点K,进而根据叶
子节点U、V和W的分析结果确定节点K是否需要保留;基于节点K定位节点D,进而根据节点K
的分析结果确定节点D是否需要保留;基于节点X定位节点M,进而根据节点X的分析结果确
定节点M是否需要保留;基于叶子节点L和节点M定位节点E,进而根据叶子节点L和节点M的
分析结果确定节点E是否需要保留;根据叶子节点Y、Z和#定位节点N,进而根据叶子节点Y、Z
和#的分析结果确定节点N是否需要保留;根据节点N和叶子节点O的分析结果定位节点F,进
而根据节点N和叶子节点O的分析结果确定节点F是否需要保留。
[0104] 最后,基于节点B、C、D、E和F定位节点A,并根据节点B、C、D、E和F的分析结果确定节点A是否保留。
[0105] 步骤105,根据每一所述叶子节点的所述分析结果,确定待提取信息的提取路径。
[0106] 可理解的,在实际应中,对待提取网页进行网页信息提取时所依据的提取路径不仅要包括记录了网页信息的叶子节点,还需要包括叶子节点到根节点之间涉及的所有子节
点。故而在确定待提取信息的提取路径时,需要先根据每一叶子节点的分析结果,确定DOM
树中需要保留的节点,进而根据DOM树中需要保留的节点,确定最终提取待提取信息的提取
路径。
[0107] 关于根据每一叶子节点的分析结果,确定DOM树中需要保留的节点的方式,具体为:
[0108] 首先,对于DOM树中的每一父节点,根据父节点下所有子节点的分析结果,确定父节点是否需要保留。
[0109] 具体的,在实际应用中,根据父节点下所有子节点的分析结果,确定父节点是否需要保留时,可以根据如下规则进行:
[0110] 在DOM树中节点的分析结果,如value值为数值时,预设的规则可以为:
[0111] 设父节点的value值=父节点下的所有子节点的value值之和,即基于加和运算的方式,根据父节点下所有子节点的分析结果,确定父节点是否需要保留。
[0112] 具体的,当计算获得的父节点的value值不为0时,确定所述父节点需要保留,否则为不需要保留。
[0113] 在DOM树中节点的分析结果采用的是“false”和“true”,或者“0”和“1”表示时,预设的规则具体是基于or运算的方式,即只要父节点下有一个节点是需要保留的,那么当前
的父节点就是需要保留的。
[0114] 应当理解的是,上述示例仅是为了更好的理解本实施例的技术方案而列举的示例,不作为对本实施例的唯一限制。
[0115] 然后,在DOM树中标记需要保留的所有父节点,并根据每一叶子节点的分析结果标记需要保留的叶子节点,进而得到DOM树中需要保留的节点。
[0116] 基于上述方式,在DOM树中标记完需要保留的父节点和叶子节点,得到DOM树中最终需要保留的节点后,可以按照预设的遍历的方式对所述DOM树中需要保留的节点进行遍
历,将遍历到的每一节点的tag标签按序添加到预先构建的存储介质,比如列表、数组,进而
得到从待提取网页中提取的网页信息,即待提取信息的提取路径。
[0117] 关于上述所说的预设的遍历方式,在实际应用中可以是后序遍历的方式,也可以是前序遍历的方式,或者其他遍历方式,本实施例对此不做限制。
[0118] 为了更好的理解步骤105中的操作,以下仍以图2所示的DOM树为例进行说明:
[0119] 假设,经过步骤104的处理后,确定叶子节点P、H、U、V、W、X、Z和O不需要保留,即需要从DOM树中删除,叶子节点Q、R、S、T、J、L、Y和#需要保留。
[0120] 则对于叶子节点P、Q和R的父节点,即节点G,由于其下的3个叶子节点中有2个是需要保留的,故而最终计算出的节点G的value值是不为0的,因此节点G需要标记为需要保留
的节点。
[0121] 相应地,对于节点G和叶子节点H的父节点,即节点B,由于其下的2个节点中有1个是需要保留的,故而最终计算出的节点B的value值是不为0的,因此节点B需要标记为需要
保留的节点。
[0122] 相应地,对于叶子节点S和T的父节点,即节点I,由于其下的2个节点均需要保留,故而最终计算出的节点I的value值是不为0的,因此节点I需要标记为需要保留的节点。
[0123] 相应地,对于节点I和叶子节点J的父节点,即节点C,由于其下的2个节点均需要保留的,故而最终计算出的节点C的value值是不为0的,因此节点C需要标记为需要保留的节
点。
[0124] 相应地,对于叶子节点U、V和W的父节点,即节点K,由于其下的3个节点均为不需要保留的,故而最终计算出的节点K的value值等于0,因此节点K需要标记为不需要保留的节
点。
[0125] 相应地,对于节点K的父节点,即节点D,由于其下的只有一个节点K,而节点K是不需要保留的,故而最终计算出的节点B的value值等于0,因此节点D需要标记为不需要保留
的节点。
[0126] 相应地,对于叶子节点X的父节点,即节点M,由于其下只有一个叶子节点X,而叶子节点X是不需要保留的,故而最终计算出的节点M的value值等于0,因此节点M需要标记为不
需要保留的节点。
[0127] 相应地,对于节点M和叶子节点L的父节点,即节点E,由于其下的2个节点中有1个是需要保留的,故而最终计算出的节点E的value值是不为0的,因此节点E需要标记为需要
保留的节点。
[0128] 相应地,对于叶子节点Y、Z和#的父节点,即节点N,由于其下的3个叶子节点中有2个是需要保留的,故而最终计算出的节点N的value值是不为0的,因此节点N需要标记为需
要保留的节点。
[0129] 相应地,对于节点N和叶子节点O的父节点,即节点F,由于其下的2个节点中有1个是需要保留的,故而最终计算出的节点F的value值是不为0的,因此节点F需要标记为需要
保留的节点。
[0130] 相应地,对于节点B、C、D、E、F的父节点,即节点A(也是根节点),由于其下的5个节点中有4个是需要保留的,故而最终计算出的节点A的value值不为0,因此节点A需要标记为
需要保留的节点。
[0131] 基于上述判断,最终确定的图2中DOM树中需要保留的节点为Q、R、S、T、Y、#、G、I、J、L、N、B、C、E、F和A。
[0132] 此外,可理解的是,在实际应用中,在从待提取网页中提取待提取信息时,需要从根节点一直提取到最末端的叶子节点,因而对于每一叶子节点,都会对应一条提取路径。
[0133] 基于此,根据上述DOM树中确定的需要保留的节点,以及上述给出的按照预设的遍历的方式对所述DOM树中需要保留的节点进行遍历,比如后序遍历方式,将遍历到的每一节
点的tag标签按序添加到预先构建的存储介质,比如列表、数组,进而得到提取路径的方式,
最后可以得到A—>B—>G—>Q、A—>B—>G—>R、A—>C—>I—>S、A—>B—>I—>T、A—>C—>
J、A—>E—>L、A—>F—>N—>Y和A—>F—>N—>#这8条提取路径。
[0134] 步骤106,根据所述提取路径,从所述待提取网页中提取所述待提取信息。
[0135] 以从图2所示的DOM树中提取出的上述8条提取路径为例,最终需要分别以上述8条提取路径,从待提取网页中提取对应的待提取信息。
[0136] 通过上述描述不难发现,本实施例中提供的网页信息的提取方法,通过根据待提取网页中每一叶子节点的叶子节点路径和叶子节点的叶子节点信息,以及该叶子节点所属
父节点的父节点信息构建DOM树,从而使得构建的DOM树仅记录叶子节点,以及叶子节点所
属父节点的节点信息,相较于现有需利用待提取网页中全部节点的节点信息才可以构建
DOM树,进而进行网页信息提取的方案,大大降低了构建DOM树所需的节点信息数量,并且基
于该结构的DOM树,也大大降低了后续的计算量,以及对计算资源、GPU资源的消耗。
[0137] 此外,由于在实际应用中,待提取网页中的信息大多是在叶子节点内的,因而本实施例中提供的网页信息的提取方法,通过对DOM树中的每一叶子节点进行遍历,尤其是采用
后序遍历的方式,并利用预先训练获得的神经网络识别模型仅对遍历到的每一叶子节点进
行分析,进而根据每一叶子节点的分析结果确定待提取信息的提取路径,使得最终确定的
提取路径中包含了所有记录有网页信息的叶子节点,进而可以根据确定的提取路径从待提
取网页中提取出尽可能完整的待提取信息,从而解决了现有从根节点开始遍历剪枝导致将
原本需要保留的节点去除,使得最终提取的网页信息不完整、不准确的问题。
[0138] 此外,通过基于具有自学习功能、联想存储功能,以及高速寻找优化解能力的神经网络识别模型来分析确定DOM树中每一叶子节点的情况,从而可以基于同一神经网络识别
模型对同一类型的待提取网页进行信息提取,解决了现有对于每一不同路径的待提取网页
都需要构建专门的XPath路径模板导致的人力成本高,以及因为XPath路径模板无法自学习
适应待提取网页变换导致的信息提取不准确的问题。
[0139] 本发明的第二实施例涉及一种网页信息的提取方法。第二实施例在第一实施例的基础上做了进一步改进,主要改进之处为:在获取待提取网页中每一叶子节点的叶子节点
路径之前,先训练神经网络识别模型,即在执行网页信息的提取之前,需要先确保已经训练
获得的了适合对当前需要进行信息提取的待提取网页进行信息提取的神经网络识别模型。
[0140] 如图4所示,第二实施例涉及的网页信息的提取方法,包括如下步骤:
[0141] 步骤401,训练神经网络识别模型。
[0142] 为了便于理解,本实施例给出一种训练神经网络识别模型的实现方式,具体如下:
[0143] (1)利用网络爬虫获取训练样本网页的HTML源码。
[0144] 具体的说,在本实施例中,利用网络爬虫获取训练样本网页的HTML源码,是为了获得训练能够识别待提取网页中不同部分的内容的神经网络识别模型所需的语料。
[0145] 可理解的,在实际应用中,待提取网页中通常包括了正文部分、标题部分、广告部分、等可以进行信息提取的部分。故而,为了能够获得提取上述各部分内容的神经网络识别
模型,获取到的语料包括但不限于正文语料、标题语料、广告语料等。
[0146] 相应地,在获取到的语料为正文语料时,基于正文语料进行训练,最终得到的神经网络识别模型即为用于抽取正文信息的神经网络识别模型;在获取到的语料为标题语料
时,基于标题语料进行训练,最终得到的神经网络识别模型即为用于抽取标题信息的神经
网络识别模型;在获取到的语料为广告语料时,基于广告语料进行训练,最终得到的神经网
络识别模型即为用于抽取广告信息的神经网络识别模型。
[0147] 也就是说,通过获取不同类型的语料,就可以构建用于抽取待提取网页中不同部分的信息的神经网络识别模型,即通过改变训练时的语料,就可以获得符合业务需求的神
经网络识别模型,从而在后续使用中,对网页中信息的提取,只需考虑需要提取的信息所属
的类型,进而选择对应的神经网络识别模型即可实现对众多网页中相同类型的信息的提
取。
[0148] 此外,值得一提的是,在实际应用中,为了进一步减少训练所需的语料,在根据业务需求选择训练所需的语料时,对于单一业务,比如仅需提取研究报告、公告、债券等网页
类型的网页中的信息时,获取的训练语料可以局限到上述几类网页中,即利用网络爬虫获
取的训练样本网页的HTML源码是研究报告类网页的HTML源码、公告类网页的HTML源码和债
券类网页的HTML源码。
[0149] 应当理解的是,上述示例仅是为了更好的理解本实施例的技术方案而列举的示例,不作为对本实施例的唯一限制。
[0150] (2)对所述训练样本网页的HTML源码进行解析,得到所述训练样本网页包括的所有节点的路径信息。
[0151] 关于对训练样本网页的HTML源码进行解析,以获得训练样本网页包括的所有节点的路径信息的方式,与第一实施例中对待提取网页的HTML源码进行解析,获得待提取网页
包括的所有节点的路径信息的方式大致相同,即直接利用现有可以对网页进行解析的解析
工具,如LXML库,或者Beautiful Soup进行解析即可,本实施例对此不再赘述。
[0152] 此外,值得一提的是,在实际应用中,为了避免对重复的训练样本网页进行处理,在执行步骤(2)之前,可以先对网络爬虫获取到的训练样本网页进行去重,然后在入库等待
执行步骤(2)。
[0153] 此外,可理解的,由于在实际应用中,待提取网页中除了包括网页本身的信息之外,还会包括一些干扰内容,比如菜单、链接等,而这些内容的存在会对网页信息的提取产
生一定影响,进而导致最终提取的网页信息产生错误。因此,为了尽可能避免这一问题,还
可以去训练样本网页的HTML源码进行清洗。
[0154] 需要说明的是,本实施例中所说的对训练样本网页的HTML源码的清洗,是在不破坏训练样本网页的HTML源码的原始架构的前提下,将干扰内容剔除。
[0155] (3)对所述路径信息去重,得到所述训练样本网页中每一叶子节点的叶子节点路径。
[0156] (4)获取每一叶子节点路径中包括的所有节点的tag标签和class属性,并根据所有节点的tag标签构建tag词嵌入模型,根据所有节点的class属性构建class词嵌入模型。
[0157] (5)从所述tag词嵌入模型中获取所述叶子节点的叶子节点tag词向量和所述叶子节点的父节点的父节点tag词向量,从所述class词嵌入模型获取所述叶子节点的叶子节点
class词向量和所述叶子节点的父节点的父节点class词向量。
[0158] (6)将所述叶子节点tag词向量和所述父节点tag词向量,所述叶子节点class词向量和所述父节点class词向量,以及所述叶子节点的文本长度作为训练参数,输入预先构建
的神经网络训练模型进行迭代训练至所述神经网络训练模型满足预设收敛条件,得到所述
神经网络识别模型。
[0159] 需要说明的是,在本实施例中,最终训练获得的神经网络识别模型包括但不限于前馈神经网络(feedforward neural network,FNN)模型、文本卷积神经网络(Text 
Convolutional Neural  Networks,textCNN)模型、深度卷积神经网络(Deep 
Convolutional Neural Networks,DCNN)模型、区域卷积神经网络(Region Convolutional 
Neural Networks,RCNN)模型、异构图注意力网络(Heterogeneous Graph Attention 
Network,HAN)模型、transformer模型等。故而,训练神经网络识别模型所需的神经网络训
练模型需要为上述神经网络模型。
[0160] 具体的,为了保证最终训练获得的神经网络识别模型能够具有较高的识别精准度,神经网络训练模型具体为多层神经网络训练模型,即包括一层输入层、一层输出层和至
少一层隐藏层。
[0161] 进一步地,在保证训练获得的神经网络识别模型准确率的基础上,为了有效避免网络过于复杂造成的过拟合现象,同时保证神经网络识别模型的鲁棒性,训练神经网络识
别模型所需的多层神经网络训练模型可以为三层前馈神经网络模型,即仅包括一层输入
层、一层隐藏层和一层输出层。
[0162] 另外,为了降低训练过程的计算难度和复杂度,可以采用线性整流函数(Rectified Linear Unit,ReLU)对神经网络训练模型中的输入层和隐藏层进行激活,采用
S型函数(Sigmoid function,也称:S型生长曲线)对神经网络训练模型中的输出层进行激
活。
[0163] 由此,实现了对神经网络识别模型的构建。
[0164] 步骤402,获取待提取网页中每一叶子节点的叶子节点路径。
[0165] 步骤403,根据所述叶子节点路径,获取所述叶子节点路径对应的所述叶子节点的叶子节点信息和所述叶子节点的父节点的父节点信息,得到所述叶子节点的节点信息。
[0166] 步骤404,根据每一所述叶子节点路径和每一所述叶子节点的所述节点信息,构建文档对象模型DOM树。
[0167] 步骤405,对所述DOM树中的每一节点进行遍历,并利用预先训练获得的神经网络识别模型对遍历到的每一所述叶子节点进行分析,得到每一所述叶子节点的所述分析结
果。
[0168] 步骤406,根据每一所述叶子节点的所述分析结果,确定待提取信息的提取路径。
[0169] 步骤407,根据所述提取路径,从所述待提取网页中提取所述待提取信息。
[0170] 不难发现,本实施例中的步骤402至步骤407与第一实施例中的步骤101至步骤106大致相同,此处不再赘述。
[0171] 由此,本实施例中提供的网页信息的提取方法,在从待提取网页中提取网页信息之前,通过先训练获得对应当前类型的待提取网页的神经网络识别模型,从而可以确保从
待提取网页中提取到完整、准确的网页信息。
[0172] 此外,本发明的实施例通过采用三层前馈神经网络模型作为训练神经网络识别模型所需的神经网络训练模型,在保证训练获得的神经网络识别模型准确率的基础上,有效
避免了网络过于复杂造成的过拟合现象,从而提升了神经网络识别模型的鲁棒性。
[0173] 另外,本发明的实施例,通过采用线性整流函数对神经网络训练模型中的输入层和隐藏层进行激活,通过采用S型函数对神经网络训练模型中的输出层进行激活,从而有效
降低了训练过程中的计算难度和复杂度。
[0174] 应当理解的是,上面各种方法的步骤划分,只是为了描述清楚,实现时可以合并为一个步骤或者对某些步骤进行拆分,分解为多个步骤,只要包括相同的逻辑关系,都在本专
利的保护范围内;对算法中或者流程中添加无关紧要的修改或者引入无关紧要的设计,但
不改变其算法和流程的核心设计都在该专利的保护范围内。
[0175] 本发明第三实施例涉及一种网页信息的提取装置,如图5所示,包括:叶子节点路径获取模块501、节点信息获取模块502、DOM树构建模块503、叶子节点分析模块504、提取路
径确定模块505和网页信息提取模块506。
[0176] 其中,叶子节点路径获取模块501,用于获取待提取网页中每一叶子节点的叶子节点路径;节点信息获取模块502,用于根据所述叶子节点路径,获取所述叶子节点路径对应
的所述叶子节点的叶子节点信息和所述叶子节点的父节点的父节点信息,得到所述叶子节
点的节点信息;DOM树构建模块503,用于根据每一所述叶子节点路径和每一所述叶子节点
的所述节点信息,构建文档对象模型DOM树;叶子节点分析模块504,用于对所述DOM树中的
每一节点进行遍历,并利用预先训练获得的神经网络识别模型对遍历到的每一所述叶子节
点进行分析,得到每一所述叶子节点的所述分析结果;提取路径确定模块505,用于根据每
一所述叶子节点的所述分析结果,确定待提取信息的提取路径;网页信息提取模块506,用
于根据所述提取路径,从所述待提取网页中提取所述待提取信息。
[0177] 此外,在另一个例子中,叶子节点路径获取模块501在获取待提取网页中每一叶子节点的叶子节点路径时,具体为:
[0178] 获取所述待提取网页的超文本标记语言HTML源码;
[0179] 对所述HTML源码进行解析,得到所述待提取网页包括的所有节点的路径信息;
[0180] 对所述路径信息去重,得到所述待提取网页中每一所述叶子节点的所述叶子节点路径。
[0181] 此外,在另一个例子中,DOM树构建模块503在根据每一所述叶子节点路径和每一所述叶子节点的所述节点信息,构建文档对象模型DOM树时,具体为:
[0182] 根据每一所述叶子节点路径,构建DOM树框架;
[0183] 将每一所述叶子节点的所述节点信息记录到所述DOM树框架中对应的所述叶子节点所在的位置,得到所述DOM树。
[0184] 此外,在另一个例子中,叶子节点分析模块504,在对所述DOM树中的每一节点进行遍历,并利用预先训练获得的神经网络识别模型对遍历到的每一所述叶子节点进行分析,
得到每一所述叶子节点的所述分析结果时,具体为:
[0185] 对所述DOM树中的每一节点进行遍历,并获取遍历到的每一所述叶子节点的所述节点信息;
[0186] 按序将遍历到的每一所述叶子节点的所述节点信息输入预先训练获得的神经网络识别模型,并获取所述神经网络识别模型的输出结果,得到每一所述叶子节点的所述分
析结果。
[0187] 此外,在另一个例子中,节点信息包括:叶子节点的tag标签、叶子节点的class属性、叶子节点的文本长度、叶子节点对应的父节点的tag标签和叶子节点对应的父节点的
class属性。
[0188] 相应地,所述按序将遍历到的每一所述叶子节点的所述节点信息输入预先训练获得的神经网络识别模型,具体为:
[0189] 对于遍历到的每一所述叶子节点的所述节点信息,分别对所述叶子节点的tag标签、所述叶子节点的class属性、所述叶子节点对应的父节点的tag标签和所述叶子节点对
应的父节点的class属性进行向量转换,得到四个词向量;
[0190] 按序将遍历到的每一所述叶子节点对应的四个词向量和所述叶子节点的本文长度输入预先训练获得的神经网络识别模型。
[0191] 此外,在另一个例子中,提取路径确定模块505在每一所述叶子节点的所述分析结果,确定待提取信息的提取路径时,具体为:
[0192] 根据每一所述叶子节点的所述分析结果,确定所述DOM树中需要保留的节点;
[0193] 根据所述DOM树中需要保留的节点,确定待提取信息的提取路径。
[0194] 此外,在另一个例子中,述根据每一所述叶子节点的所述分析结果,确定所述DOM树中需要保留的节点,具体为:
[0195] 对于所述DOM树中的每一所述父节点,根据所述父节点下所有子节点的分析结果,确定所述父节点是否需要保留;
[0196] 在所述DOM树中标记需要保留的所述父节点,并根据每一所述叶子节点的所述分析结果标记需要保留的所述叶子节点,得到所述DOM树中需要保留的节点。
[0197] 此外,在另一个例子中,所述根据所述DOM树中需要保留的节点,确定待提取信息的提取路径,具体为:
[0198] 按照预设的遍历的方式对所述DOM树中需要保留的节点进行遍历,将遍历到的每一所述节点的tag标签按序添加到预先构建的存储介质,得到所述待提取信息的所述提取
路径。
[0199] 此外,在另一个例子中,网页信息的提取装置还包括神经网络识别模型训练模块。
[0200] 具体的,神经网络识别模型训练模块,用于按照以下步骤构建神经网络识别模型:
[0201] 利用网络爬虫获取训练样本网页的HTML源码;
[0202] 对所述训练样本网页的HTML源码进行解析,得到所述训练样本网页包括的所有节点的路径信息;
[0203] 对所述路径信息去重,得到所述训练样本网页中每一叶子节点的叶子节点路径;
[0204] 获取每一叶子节点路径中包括的所有节点的tag标签和class属性,并根据所有节点的tag标签构建tag词嵌入模型,根据所有节点的class属性构建class词嵌入模型;
[0205] 从所述tag词嵌入模型中获取所述叶子节点的叶子节点tag词向量和所述叶子节点的父节点的父节点tag词向量,从所述class词嵌入模型获取所述叶子节点的叶子节点
class词向量和所述叶子节点的父节点的父节点class词向量;
[0206] 将所述叶子节点tag词向量和所述父节点tag词向量,所述叶子节点class词向量和所述父节点class词向量,以及所述叶子节点的文本长度作为训练参数,输入预先构建的
神经网络训练模型进行迭代训练至所述神经网络训练模型满足预设收敛条件,得到所述神
经网络识别模型。
[0207] 此外,在另一个例子中,所述神经网络训练模型为多层神经网络训练模型。
[0208] 此外,在另一个例子中,所述多层神经网络训练模型为三层前馈神经网络模型,所述三层前馈神经网络模型包括一层输入层、一层隐藏层和一层输出层。
[0209] 此外,在另一个例子中,神经网络识别模型训练模块,还用于对所述神经网络训练模型进行迭代训练的过程中执行以下操作:
[0210] 采用线性整流函数对所述输入层和所述隐藏层进行激活;
[0211] 采用S型函数对所述输出层进行激活。
[0212] 不难发现,本实施例为与第一或第二实施例相对应的装置实施例,本实施例可与第一或第二实施例互相配合实施。第一或第二实施例中提到的相关技术细节在本实施例中
依然有效,为了减少重复,这里不再赘述。相应地,本实施例中提到的相关技术细节也可应
用在第一或第二实施例中。
[0213] 值得一提的是,本实施例中所涉及到的各模块均为逻辑模块,在实际应用中,一个逻辑单元可以是一个物理单元,也可以是一个物理单元的一部分,还可以以多个物理单元
的组合实现。此外,为了突出本发明的创新部分,本实施例中并没有将与解决本发明所提出
的技术问题关系不太密切的单元引入,但这并不表明本实施例中不存在其它的单元。
[0214] 本发明第四实施例涉及一种网页信息的提取设备,如图6所示,包括至少一个处理器601;以及,与所述至少一个处理器601通信连接的存储器602;其中,所述存储器602存储
有可被所述至少一个处理器601执行的指令,所述指令被所述至少一个处理器601执行,以
使所述至少一个处理器601能够执行上述第一或第二实施例所描述的网页信息的提取方
法。
[0215] 其中,存储器602和处理器601采用总线方式连接,总线可以包括任意数量的互联的总线和桥,总线将一个或多个处理器601和存储器602的各种电路连接在一起。总线还可
以将诸如外围设备、稳压器和功率管理电路等之类的各种其他电路连接在一起,这些都是
本领域所公知的,因此,本文不再对其进行进一步描述。总线接口在总线和收发机之间提供
接口。收发机可以是一个元件,也可以是多个元件,比如多个接收器和发送器,提供用于在
传输介质上与各种其他装置通信的单元。经处理器601处理的数据通过天线在无线介质上
进行传输,进一步,天线还接收数据并将数据传输给处理器601。
[0216] 处理器601负责管理总线和通常的处理,还可以提供各种功能,包括定时,外围接口,电压调节、电源管理以及其他控制功能。而存储器602可以被用于存储处理器601在执行
操作时所使用的数据。
[0217] 本发明第五实施例涉及一种计算机可读存储介质,存储有计算机程序。计算机程序被处理器执行时实现上述网页信息的提取方法实施例。
[0218] 即,本领域技术人员可以理解,实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序存储在一个存储介质中,包括若干指令用以使
得一个设备(可以是单片机,芯片等)或处理器(processor)执行本申请各个实施例所述方
法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read‑Only 
Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程
序代码的介质。
[0219] 本领域的普通技术人员可以理解,上述各实施例是实现本发明的具体实施例,而在实际应用中,可以在形式上和细节上对其作各种改变,而不偏离本发明的精神和范围。