一种提取网页正文的方法

文档序号:8258968阅读:765来源:国知局
一种提取网页正文的方法
【技术领域】
[0001]本发明涉及网页文字信息处理领域,特别是一种提取网页正文的方法。
【背景技术】
[0002]在舆情监测和分析领域中,都会涉及到网页正文内容提取。而舆情检测和分析最有价值的对象便是网页的正文部分,大多数情况下,为了便于分析,需要从网页中提取有价值的正文信息,排除不需要的干扰信息。可以说正文提取的好坏,直接影响了分析结果的好坏。
[0003]中国发明专利CN 102779169 A公开了一种基于HTML标签的网页正文提取方法包括以下步骤:(1)中央处理器将网页的HTML代码以文本形式读入寄存器中,并将寄存器中的字符全部小写化,便于后面的字符匹配;(2)中央处理器通过扫描寄存器,将HTML网页划分为Head和Body量大区域块;(3)中央处理器调用净化处理单元,通过以下3个环节对寄存器进行净化:
[0004]一、删除head区域块中与网页标题无关的内容,
[0005]二、确定body区域块中网页正文标题的位置,
[0006]三、删除body区域块中与网页正文无关的内容;
[0007](4)中央处理器调用转义字符转换处理单元,把寄存器里面的转义字符转化成正常字符;(5)中央处理器依次在存储器中保存寄存器中网页信息,即为提取的网页正文部分。
[0008]html文件即超文本传输语言文件,其结构有便签和内容构成,而从html中提取含有价值信息的正文,需要了解html的结构,熟悉网页展现正文的普遍规律。基于这些规律可以通过标签的普遍用途来提取正文,比如title或hl,h2标签一般用作标题,P —般表示正文段落,根据标签的含义去提取正文。因为正文的P标签会有多个,便签中还会包含其他标签,因此这种正文提取的方法不够完整全面。有的正文提取是根据标签的长度来确定包含正文的标签,这种方式的缺点在于正文是由多个标签包含的。这种方式的提取只能取到正文的某个标签,所以正文不能取全。

【发明内容】

[0009]本发明需要解决的技术问题提供一种处理速度快且准确率高的提取网页正文的方法。
[0010]为解决上述的技术问题,本发明一种提取网页正文的方法包括以下步骤:
[0011]步骤SlOl:网页源代码获取,获取html的页面源代码;步骤S102:解析并遍历标签,通过html解析器解析页面源代码获得标签并遍历每个标签;步骤S103:标签内容长度判断,对每个标签的内容长度进行判断,遍历标签内容长度后,确定标签内容长度最长的标签;步骤S104:提取标签内容,取出标签最长的标签内容,取出的内容就是需要提取的正文内容。
[0012]进一步的,所述步骤S102中用来解析html页面源代码的html解析器采用jsoup工具。
[0013]进一步的,所述步骤S102中遍历每个标签采用递归遍历每个标签。
[0014]进一步的,所述步骤S103还包括以下步骤:
[0015]步骤S1031:判断标签内容长度,判断标签的内容长度是否最长,如果最长则进入步骤S1032,如果不是则进入步骤S1033 ;步骤S1032:存储本标签,存储标签内容长度最长的标签、标签长度L、标志为本标签;步骤S1033:判断本标签是否有子元素,如果有则进入步骤S1034,如果没有则进入步骤S1039 ;步骤S1034:标签子元素,对每个子元素进行标签形成不同的子标签;步骤S1035:相同子标签内容长度相加,将相同子标签的内容长度相加;步骤S1036:判断子标签内容相加长度是否最长,将子标签内容长度相加与当前最长标签长度L相比较,判断是否比最长标签长度L长,如果是则进入步骤S1037,如果否则进入步骤S1038 ;步骤S1037:存储子标签,存储内容长度较大的子标签的标签、子标签的父标签以及标志为子标签;步骤S1038:判断子标签是否全部遍历相加,如果是则进入步骤S1039,如果否则返回步骤S1035 ;步骤S1039:判断本标签是否全部遍历,如果是则进入步骤S104,如果否则返回步骤S1031。
[0016]更进一步的,所述步骤S104中如果存储的结果子标签标志为子标签的,提取这个标签的子标签的所有内容;如果子标签标志没有子标签的,则提取标签的内容。
[0017]采用上述方法后,由于网页的正文是由多个标签包含的,通过遍历每个标签,将相同标签的内容长度相加,再跟其他单个标签的长度相比较,最长的标签便是需要提取的正文内容,本发明既能保证处理速度,提取的准确率也高。
【附图说明】
[0018]下面将结合附图和【具体实施方式】对本作进一步详细的说明。
[0019]图1为本发明一种提取网页正文方法的流程图。
【具体实施方式】
[0020]如图1所示,本发明一种提取网页正文的方法,包括以下步骤,
[0021]步骤SlOl:网页源代码获取,获取html的页面源代码,这是本领域技术人员都理解,在这里就不赘述了。
[0022]步骤S102:解析并遍历标签,本实施方式采用jsoup工具解析页面源代码获得标签并遍历每个标签。现在网页的正文都是由一个或多个P、div、span以及a标签组成的,例如一个标签下的包含多个P标签,这些P标签包含正文的内容。为了提取需要的正文内容,将这些P标签的内容长度相加,再跟其他单个标签的长度相比较,最长的标签便是需要提取的正文内容。
[0023]步骤S103:标签内容长度判断,对每个标签的内容长度进行判断,遍历标签内容长度后,确定标签内容长度最长的标签。由于标签包括本标签和子标签,所以在判断标签长度时需要区分本标签和子标签,具体步骤如下:
[0024]步骤S1031:判断标签内容长度,对每个标签进行判断,如果这个标签的内容长度最长,则通过步骤S1032存储这个标签、这个标签的长度L以及标志为本标签,在存储时设置标志位,可以通过设置标志位O表示本标签,标志位I表示子标签,当然也可以是其他。如果不是则进入步骤S1033,判断这个本标签是否有子元素,如果没有则进入步骤S1039。
[0025]通过步骤S1033判断当前本标签是否有子元素,如果有的话则进入步骤S1034对每个子元素进行标签形成不同子标签,常见的标签有P、span、div和a标签,本实施方式中本标签包含3个P标签和8个div标签。然后通过步骤S1035分别计算3个P标签的内容相加的长度和8个div标签的内容相加的长度,然后通过步骤S1036与当前存储的标签内容长度L进行比较。如果3个P标签的内容相加的长度或8个div标签的内容相加的长度大于存储的标签内容长度L,则进入步骤S1037存储这个P标签、P标签的父标签以及标志为子标签,并用3个P标签的内容相加的长度LI或8个div标签的内容相加的长度L2替换原来的标签内容长度L。当进入下一个循环判断本标签或者子标签的长度是否最长时,就是与LI或者L2相比较。如果3个P标签的内容相加的长度或8个div标签的内容相加的长度小于存储的标签内容长度L,返回步骤S1038判断子标签是否全部通过遍历相加。本实施方式中存在P标签和div标签,先对3个P标签的内容相加的长度比较,比较完后返回步骤S1035将8个div标签内容长度相加再通过步骤S1036进行新一轮比较。步骤S1039是用来判断本标签是否全部遍历的,本实施方式中本标签共N个,初次通过步骤S1031判断本标签内容长度时初始化i = 0,当判断完一次本标签和本标签的所有子标签后i++,直至i = N遍历结束。
[0026]如图1所示,如果当前存储的标志位标志为本标签,则通过步骤S104提取本标签中的内容;如果当前存储的标志为子标签,则通过步骤S104提取子标签的内容。以3个P标签的内容相加的长度LI最长为例,就将子标签P标签中的所有内容提出出来,提取出来的内容就是需要的网页正文内容。
[0027]当然,也可以采用其他适用的html解析器,这样的变换均落在本发明的保护范围之内。
[0028]虽然以上描述了本发明的【具体实施方式】,但是本领域熟练技术人员应当理解,这些仅是举例说明,可以对本实施方式作出多种变更或修改,而不背离发明的原理和实质,本发明的保护范围仅由所附权利要求书限定。
【主权项】
1.一种提取网页正文的方法,其特征在于,包括以下步骤: 步骤SlOl:网页源代码获取,获取html的页面源代码; 步骤S102:解析并遍历标签,通过html解析器解析页面源代码获得标签并遍历每个标签; 步骤S103:标签内容长度判断,对每个标签的内容长度进行判断,遍历标签内容长度后,确定标签内容长度最长的标签; 步骤S104:提取标签内容,取出标签最长的标签内容,取出的内容就是需要提取的正文内容。
2.按照权利要求1所述的一种提取网页正文的方法,其特征在于:所述步骤S102中用来解析html页面源代码的html解析器采用jsoup工具。
3.按照权利要求1所述的一种提取网页正文的方法,其特征在于:所述步骤S102中遍历每个标签采用递归遍历每个标签。
4.按照权利要求1所述的一种提取网页正文的方法,其特征在于,所述步骤S103还包括以下步骤: 步骤S1031:判断标签内容长度,判断标签的内容长度是否最长,如果最长则进入步骤S1032,如果不是则进入步骤S1033 ; 步骤S1032:存储本标签,存储标签内容长度最长的标签、标签长度L、标志为本标签; 步骤S1033:判断本标签是否有子元素,如果有则进入步骤S1034,如果没有则进入步骤 S1039 ; 步骤S1034:标签子元素,对每个子元素进行标签形成不同的子标签; 步骤S1035:相同子标签内容长度相加,将相同子标签的内容长度相加; 步骤S1036:判断子标签内容相加长度是否最长,将子标签内容长度相加与当前最长标签长度L相比较,判断是否比最长标签长度L长,如果是则进入步骤S1037,如果否则进入步骤S1038 ; 步骤S1037:存储子标签,存储内容长度较大的子标签的标签、子标签的父标签以及标志为子标签; 步骤S1038:判断子标签是否全部遍历相加,如果是则进入步骤S1039,如果否则返回步骤S1035 ; 步骤S1039:判断本标签是否全部遍历,如果是则进入步骤S104,如果否则返回步骤S1031。
5.按照权利要求4所述的一种提取网页正文的方法,其特征在于:所述步骤S104中如果存储的结果子标签标志为子标签的,提取这个标签的子标签的所有内容;如果子标签标志没有子标签的,则提取本标签的内容。
【专利摘要】本发明涉及网页文字信息处理领域,特别是一种提取网页正文的方法,包括以下步骤:步骤S101:网页源代码获取,获取html的页面源代码;步骤S102:解析并遍历标签,通过html解析器解析页面源代码获得标签并遍历每个标签;步骤S103:标签内容长度判断,对每个标签的内容长度进行判断,遍历标签内容长度后,确定标签内容长度最长的标签;步骤S104:提取标签内容,取出标签最长的标签内容,取出的内容就是需要提取的正文内容。采用上述方法后,由于网页的正文是由多个标签包含的,通过遍历每个标签,将相同标签的内容长度相加,再跟其他单个标签的长度相比较,最长的标签便是需要提取的正文内容,发明既能保证处理速度,提取的准确率也高。
【IPC分类】G06F17-30
【公开号】CN104573097
【申请号】CN201510047773
【发明人】赵亮
【申请人】湖南蚁坊软件有限公司
【公开日】2015年4月29日
【申请日】2015年1月30日
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1