一种抽取正文的方法及装置制造方法及图纸

技术编号:13306761 阅读:64 留言:0更新日期:2016-07-10 02:02
本发明专利技术实施例提供了一种抽取正文的方法及装置,该方法,包括:获取待抽取网页中的层叠样式表CSS内容;根据所述CSS内容,确定所述待抽取网页中的节点的宽度,根据所述待抽取网页中的节点的宽度,确定包含正文内容的正文节点;根据所述正文节点,对所述待抽取网页进行清理,抽取所述待抽取网页的正文。本发明专利技术实施例提供了一种抽取正文的方法及装置,能够更加简单的实现正文抽取。

【技术实现步骤摘要】

本专利技术涉及计算机
,特别涉及一种抽取正文的方法及装置
技术介绍
正文抽取,是网页结构化的一部分,是网页进行文本挖掘的基础。现有技术中,通过基于文字密度比、文字个数、标点符号个数等多个过滤指标的统计方法来进行正文抽取,其中,文字密度比,是指文字占所有字符的比例,所有字符中包含文字和html(HyperTextMarkupLanguage,超级文本标记语言)标签内容。在现有的方法中,假设包含正文的节点中应该包含大量的密集的文字。由于网页编写的灵活性,有的网页的html标签中包含大量的css内容,有的网页包含的少,因此文字密度比的变化范围比较大。在现有的方法中需要设置文字密度和文字个数等多种阈值,针对不同的站点的一般要设置不同的文字密度的阈值。总之,现有技术中的抽取正文的方法比较复杂。
技术实现思路
本专利技术实施例提供了一种抽取正文的方法及装置,能够更加简单的实现正文抽取。一方面,本专利技术提供了一种抽取正文的方法,包括:S1:获取待抽取网页中的层叠样式表CSS内容;S2:根据所述CSS内容,确定所述待抽取网页中的节点的宽度,根据所述待抽取网页中的节点的宽度,确定包含正文内容的正文节点;S3:根据所述正文节点,对所述待抽取网页进行清理,抽取所述待抽取网页的正文。进一步地,所述S2,包括:A1:将所述待抽取网页的body节点添加到第一预设队列中;A2:从所述第一预设队列的头部取出当前节点,判断当前节点中的非链接字符个数是否大于等于所述待抽取网页的全文的非链接字符的个数的预设比例,如果是,则执行步骤A3,否则,执行步骤A7;A3:获取当前节点的所有儿子节点,确定所有儿子节点中带有float属性的div节点的第一个数,以及所有儿子节点中td节点的第二个数,执行步骤A4;A4:根据所述第一个数或者所述第二个数,判断当前节点是否满足预设条件,如果是,则执行步骤A5,否则,执行步骤A7;A5:确定当前节点的宽度,判断当前节点的宽度是否大于0,如果是,则执行步骤A6,否则,执行步骤A7;A6:确定当前节点的每个儿子节点的宽度,根据每个儿子节点的宽度,从当前节点的儿子节点中确定出所述正文节点;A7:将当前节点的所有儿子节点添加到所述第一预设队列中,执行步骤A2。进一步地,所述A6,包括:B1:遍历当前节点的所有儿子节点,确定未知宽度的儿子节点的个数,确定每个已知宽度的儿子节点的宽度;B2:判断未知宽度的儿子节点的个数是否大于0,如果是,执行步骤B3,否则,执行步骤B4;B3:根据当前节点的宽度和当前节点的每个已知宽度的儿子节点的宽度,确定所有未知宽度的儿子节点的总宽度,根据所述总宽度,确定每个未知宽度的儿子节点的宽度为未知宽度的儿子节点的宽度的平均值,执行B4;B4:判断当前节点的所有儿子节点中宽度最大的儿子节点的个数是否为1,如果是,则执行步骤B5,否则,执行步骤B6;B5:确定当前节点的所有儿子节点中宽度最大的儿子节点为所述正文节点;B6:确定当前节点的所有儿子节点中宽度最大的儿子节点为所述正文节点中字符个数最多的节点为所述正文节点。进一步地,所述S3中的所述根据所述正文节点,对所述待抽取网页进行清理,包括:C1:删除所述正文节点的所有兄弟节点;C2:将所述正文节点的父亲节点作为当前节点;C3:判断当前节点是否为Body节点,如果是,则执行步骤C5,否则,执行步骤C4;C4:删除当前节点的兄弟节点,将当前节点的父亲节点作为当前节点,返回步骤C3;C5:从所述正文节点的孩子节点中的最底层开始,从后往前,依次判断所述正文节点的孩子节点中的当前节点是否满足删除条件,其中,所述删除条件为:只包含链接,或者不包含所有预设符号,如果是,则删除该当前节点,否则,执行步骤C6;C6:从所述正文节点的孩子节点中的最高层开始,从前往后,依次判断所述正文节点的孩子节点中的当前节点是否满足所述删除条件,如果是,则删除该当前节点,否则,结束当前流程。进一步地,所述S2中,所述根据所述CSS内容,确定所述待抽取网页中的节点的宽度,包括:D1:获取当前节点的class属性中的类选择器的值,将所述类选择器的值依次放入第二预设队列中,作为待处理值;D2:获取当前节点的class属性中的id选择器的值,将所述id选择器的值依次放入第二预设队列中,作为待处理值;D3:判断所述第二预设队列是否为空,如果是,则执行步骤D10,否则,执行步骤D4;D4:从所述第二预设队列中获取当前待处理值,从所述第二预设队列中删除所述当前待处理值;D5:在当前节点的CSS字符串中,判断是否能查找到当前待处理值对应的选择器出现的下一个位置,如果是,则执行步骤D6,否则,返回步骤D3;D6:判断在所述CSS内容中,当前待处理值对应的选择器的前面的选择器是否与当前节点的父亲节点一致,如果是,则执行步骤D7,否则,执行步骤D3;D7:判断在所述CSS内容中,当前待处理值对应的选择器的后面是否有其他选择器,如果是,则执行步骤D8,否则,执行步骤D3;D8:判断当前待处理值对应的选择器中的width属性值是否是绝对值,如果是,则执行步骤D9,否则,执行步骤D3;D9:将当前待处理值对应的选择器中的width属性值作为当前节点的宽度,返回步骤D3;D10:判断当前节点的宽度是否为空,如果是,则执行步骤D11,否则,输出当前节点的宽度;D11:判断当前节点的HTML标签中是否存在width属性,如果是,则执行步骤D12,否则,将当前节点的宽度设置为-1;D12:判断当前节点的HTML标签中的width属性值是否为绝对值,如果是,则将当前节点的HTML标签中的width属性值作为当前节点的宽度,否则,执行步骤D13;D13:根据当前节点的父亲节点的宽度,以及当前节点的HTML标签中的width属性值,确定当前节点的宽度。另一方面,本专利技术提供了一种抽取正文的装置,包括:获取单元,用于获取待抽取网页中的层叠样式表CSS内容;确定单元,用于根据所述CSS内容,确定所述待抽取网页中的节点的宽度,根据所述待抽取网页中的节点的宽度,确定包含正文内容的正文节点;抽取单元,用于根据所述正文节点,对所述待抽取网页进行清理,抽取所述待抽取网页的正文。进一步地,所述确定单元,具体本文档来自技高网...

【技术保护点】
一种抽取正文的方法,其特征在于,包括:S1:获取待抽取网页中的层叠样式表CSS内容;S2:根据所述CSS内容,确定所述待抽取网页中的节点的宽度,根据所述待抽取网页中的节点的宽度,确定包含正文内容的正文节点;S3:根据所述正文节点,对所述待抽取网页进行清理,抽取所述待抽取网页的正文。

【技术特征摘要】
1.一种抽取正文的方法,其特征在于,包括:
S1:获取待抽取网页中的层叠样式表CSS内容;
S2:根据所述CSS内容,确定所述待抽取网页中的节点的宽度,根据所
述待抽取网页中的节点的宽度,确定包含正文内容的正文节点;
S3:根据所述正文节点,对所述待抽取网页进行清理,抽取所述待抽取
网页的正文。
2.根据权利要求1所述的方法,其特征在于,所述S2,包括:
A1:将所述待抽取网页的body节点添加到第一预设队列中;
A2:从所述第一预设队列的头部取出当前节点,判断当前节点中的非链
接字符个数是否大于等于所述待抽取网页的全文的非链接字符的个数的预设
比例,如果是,则执行步骤A3,否则,执行步骤A7;
A3:获取当前节点的所有儿子节点,确定所有儿子节点中带有float属
性的div节点的第一个数,以及所有儿子节点中td节点的第二个数,执行步
骤A4;
A4:根据所述第一个数或者所述第二个数,判断当前节点是否满足预设
条件,如果是,则执行步骤A5,否则,执行步骤A7;
A5:确定当前节点的宽度,判断当前节点的宽度是否大于0,如果是,
则执行步骤A6,否则,执行步骤A7;
A6:确定当前节点的每个儿子节点的宽度,根据每个儿子节点的宽度,
从当前节点的儿子节点中确定出所述正文节点;
A7:将当前节点的所有儿子节点添加到所述第一预设队列中,执行步骤
A2。
3.根据权利要求2所述的方法,其特征在于,所述A6,包括:
B1:遍历当前节点的所有儿子节点,确定未知宽度的儿子节点的个数,
确定每个已知宽度的儿子节点的宽度;
B2:判断未知宽度的儿子节点的个数是否大于0,如果是,执行步骤B3,
否则,执行步骤B4;
B3:根据当前节点的宽度和当前节点的每个已知宽度的儿子节点的宽
度,确定所有未知宽度的儿子节点的总宽度,根据所述总宽度,确定每个未
知宽度的儿子节点的宽度为未知宽度的儿子节点的宽度的平均值,执行B4;
B4:判断当前节点的所有儿子节点中宽度最大的儿子节点的个数是否为
1,如果是,则执行步骤B5,否则,执行步骤B6;
B5:确定当前节点的所有儿子节点中宽度最大的儿子节点为所述正文节
点;
B6:确定当前节点的所有儿子节点中宽度最大的儿子节点为所述正文节
点中字符个数最多的节点为所述正文节点。
4.根据权利要求1所述的方法,其特征在于,所述S3中的所述根据所
述正文节点,对所述待抽取网页进行清理,包括:
C1:删除所述正文节点的所有兄弟节点;
C2:将所述正文节点的父亲节点作为当前节点;
C3:判断当前节点是否为Body节点,如果是,则执行步骤C5,否则,
执行步骤C4;
C4:删除当前节点的兄弟节点,将当前节点的父亲节点作为当前节点,
返回步骤C3;
C5:从所述正文节点的孩子节点中的最底层开始,从后往前,依次判断
所述正文节点的孩子节点中的当前节点是否满足删除条件,其中,所述删除
条件为:只包含链接,或者不包含所有预设符号,如果是,则删除该当前节
点,否则,执行步骤C6;
C6:从所述正文节点的孩子节点中的最高层开始,从前往后,依次判断
所述正文节点的孩子节点中的当前节点是否满足所述删除条件,如果是,则
删除该当前节点,否则,结束当前流程。
5.根据权利要求1-4中任一所述的方法,其特征在于,所述S2中,所

\t述根据所述CSS内容,确定所述待抽取网页中的节点的宽度,包括:
D1:获取当前节点的class属性中的类选择器的值,将所述类选择器的
值依次放入第二预设队列中,作为待处理值;
D2:获取当前节点的class属性中的id选择器的值,将所述id选择器的
值依次放入第二预设队列中,作为待处理值;
D3:判断所述第二预设队列是否为空,如果是,则执行步骤D10,否则,
执行步骤D4;
D4:从所述第二预设队列中获取当前待处理值,从所述第二预设队列中
删除所述当前待处理值;
D5:在当前节点的CSS字符串中,判断是否能查找到当前待处理值对应
的选择器出现的下一个位置,如果是,则执行步骤D6,否则,返回步骤D3;
D6:判断在所述CSS内容中,当前待处理值对应的选择器的前面的选择
器是否与当前节点的父亲节点一致,如果是,则执行步骤D7,否则,执行步
骤D3;
D7:判断在所述CSS内容中,当前待处理值对应的选择器的后面是否有
其他选择器,如果是,则执行步骤D8,否则,执行步骤D3;
D8:判断当前待处理值对应的选择器中的width属性值是否是绝对值,
如果是,则执行步骤D9,否则,执行步骤D3;
D9:将当前待处理值对应的选择器中的width属性值作为当前节点的宽
度,返回步骤D3;
D10:判断当前节点的宽度是否为空,如果是,则执行步骤D11,否则,
输出当前节点的宽度;
D11:判断当前节点的HTML标签中是否存在width属性,如果是,则
执行步骤D12,否则,将当前节点的宽度设置为-1;
D12:判断当前节点的HTML标签中的width属性值是否为绝对值,如
果是,则将当前节点的HTML标签中的width属性值作为当前节点的宽度,
否则,执行步骤D13;
D13:根据当前节点的父亲节点的宽度,以及当前节点的HTML标签中
的width属性值,确定当前节点的宽度。
6.一种抽取正文的装置,其特征在于,包括:
获取单元,用于获取待抽取网页中的层叠样式表CSS内容;
确定单元,用于...

【专利技术属性】
技术研发人员:毛立花孙海峰王传超
申请(专利权)人:浪潮软件集团有限公司
类型:发明
国别省市:山东;37

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

1