网页正文抽取方法和装置的制作方法

文档序号:6578011阅读:192来源:国知局

专利名称::网页正文抽取方法和装置的制作方法
技术领域
:本发明涉及信息处理领域,具体而言,涉及一种网页正文抽取方法和装置。
背景技术
:随着互联网信息技术的不断发展,互联网的信息量日益膨胀。近年来,全球因特网上的信息数据正以爆炸式的速度在增长。据IDC报告称,从现在到2010年,预计信息量将以每年57%的速度增长,在2010年信息总量将达到988EB(1EB=10亿GB),约为2006年的6倍,相当于有史以来所有书籍数字信息量的1800万倍。面对如此巨大的互联网信息库,如何更好的理解这海量的信息一直是信息处理领域内的关键问题。虽然说XML可以被认为是web中的通用语,但是,当前几乎所有可以得到的网络信息都是按照HTML格式写成的网页,而且这种状况在短期内很难改变(参见非专利文献[1]"GiacomoFiumara.AutomatedInformationExtractionfromWebSource:aSurvey.SalitaSperone31,1-98166Messina,Italy”)。而HTML是一种面向显示的标记性语言,主要是为了方便浏览器显示网页用,对人来说,有很多无用的信息,尤其是在网页上引入广告后,无用信息就更多了,所以要想更好地理解网络上浩瀚的信息,从HTML格式的网页中提取正文信息是必不可少的前提条件。因此,需要一种网页正文抽取方法,以便对网络上的结构化文档,如网页、XML文档等,采用一定的技术手段提取其中的正文内容。传统的网页数据抽取方法,是使用包装器(wrapper)来抽取网页中感兴趣的数据。包装器是一个程序,它从HTML文档中读取特定的内容,并用一定的格式保存下来,通常是XML形式。包装器包含一系列的规则,并利用这些规则来抽取网页的特定内容。因此目前网页数据抽取研究工作的重点之一就是探索如何能够较为容易的获得构造一个包装器所需的规则的有效方法(参见非专利文献[1])。非专利文献[2]"HammerJ,McHughJ.,etal.SemistructuredData:TheTSIMMISExperience[A]·In:proceedingottheFirstEastEuropeanSymposiumonAdvanceinDatabasesandInformationSystems[C].1997:1_8”中介绍的TSIMMIS工具中的包装器需要人工来书写抽取规则,并且规则放在专门的文件中。规则的形式是[variables,source,pattern]。其中variables{呆存才由取结果,source{呆存输人,pattern{呆存数据在source中的模式信息。variable可以用作后面的规则的source。文件中最后一个规则执行结束后,variable中保存了最后的抽取结果。这种需要人工书写规则的方法不仅费时、费力,而且容易出错、不易维护。非专利文献[3]"Liu,L.,Pu,C.etal.XffRAP:AnXML-enableffrapperConstructionSystemfortheWebInformationSource[C]·In-proceedingsofthe16thIEEEInternationalConferenceonDataEngineering,2000:611_620”中介绍的XWRAP系统的包装器采用了半自动化的方法来获取规则。它提供了友好的人机交互界面,用户可以根据系统的引导来完成规则的编写。最终系统生成一个针对特定数据源的用Java语言编写的包装器。在进行抽取之前,XWRAP系统对网页进行检查,修正其中不符合规范的语法错误和标记,并且把网页解析成一棵树。非专利文献[4]"ValterCrescenzi,GiansalvatoreMecca,etal.RoadRunnerTowardsAutomaticDataExtractionfromLargeWebSite[A].In!proceedingofthe26thInternationalConferenceonveryLargeDatabaseSystems[C],2001109-118"中介绍的RoadRunner工具是一个完全自动化的包装器自动生成工具,它通过比较来自同一数据源的两个(或多个)样本网页的结构来为包含在网页中的数据生成一定的模式,甚至不需要用户提供待抽取的数据的样本和目标模式。但是,该方法假设目标网页都是从某个数据源自动生成的,那么它就可以利用网页的标记结构重新得到网页中包含的数据的模式,因此其适用范围有一定的局限性。上面介绍的几种方法生成的包装器都是按一定的规则或模式来抽取数据。但由于网页结构的复杂性及不规范性,一个包装器的实现一般只能针对一个信息源。从非专利文献[5]“AlbertoH.F.Laender,BerthierA.Ribeiro-Neto,etal.ABriefSurveyofWebDataExtractionTools[J]·SIGMODRecord.2002,31(2):84_93”的描述中可以看到,目前的网页数据抽取工具都需要针对特定的数据源来编写对应的包装器或抽取规则。因此,如果信息是来自很多信息源,就需要很多包装器,这样包装器的生成及维护就成了一种复杂的工作。对于网络上大量存在的新闻类网页的正文信息抽取这样的任务来说,使用针对特定信息源的包装器的方法来完成显然并不是可行的方法。非专利文献[6]“孙承杰,关毅.基于统计的网页正文信息抽取方法的研究[J].中文信息学报.2004,18(5):17-22”则从统计学的角度出发,尝试用统计的方法来解决网页正文抽取这一问题。该文献根据相关统计信息以及网页正文自身的特点,提出并实现了一种比较通用的方法,并取得了比较好的效果。但是,该方法要求所有的网页正文必须存在于table标签中,这就限制了该方法的进一步推广应用。
发明内容鉴于上述情况,本发明提出一种网页正文抽取方法和装置,以便能够更加方便的处理、利用网络中浩瀚的信息。为实现上述目的,根据本发明的一个方面,提供了一种网页正文抽取方法,包括将网页表示为树状结构;判断树状结构中的每一个节点是否为有效节点;以及组合作为有效节点的叶子节点中所包含的正文信息,以得到所述网页的正文,其中,对于树状结构中的给定节点,如果在所述给定节点的儿子节点中预定类型的节点所占的比例小于或等于第一阈值,则判定所述给定节点为有效节点。根据本发明的一个实施例,在将网页表示为树状结构之前还包括,对网页进行处理,以获取符合Web标准的网页。优选地,通过后根遍历树状结构来判断树状结构中的每一个节点是否为有效节点。如果判定树状结构中的给定节点为无效节点,则抛弃所述给定节点及其所有子孙节点。根据本发明的一个实施例,将网页表示为树状结构包括定义用于表示节点的数据结构;以及根据所述网页的结构信息,利用所述数据结构将所述网页表示为所述树状结构。其中,所述数据结构包括以下内容所述节点的类型;所述节点的值;用于找到所述节点的全部儿子节点的信息;用于回溯到所述节点的父节点的信息;用于找到所述节点的下6一个兄弟节点的信息;以及所述节点的名称。优选地,所述预定类型的节点为链接节点或图片节点中的至少一个。根据本发明的一个实施例,对于树状结构中的给定非叶子节点,如果所述给定非叶子节点为链接节点或图片节点,则判定所述给定非叶子节点为有效节点;以及如果所述给定非叶子节点为脚本节点或样式节点,则判定所述给定非叶子节点为无效节点。根据本发明的一个实施例,对于树状结构中的给定叶子节点,如果所述给定叶子节点不是文本节点,或者如果所述给定叶子节点是文本节点但所述给定叶子节点的父节点是脚本节点或样式节点,则判定所述给定叶子节点为无效节点。根据本发明的另一个实施例,对于树状结构中的给定叶子节点,如果所述给定叶子节点是文本节点,并且所述给定叶子节点的父节点不是脚本节点或样式节点,则在所述给定叶子节点的内容长度大于第二阈值时,判定所述给定叶子节点为有效节点。在所述给定叶子节点的内容长度小于或等于第二阈值时,如果所述给定叶子节点的父节点是用于调整字体显示的节点,则判定所述给定叶子节点为有效节点。根据本发明的另一方面,提供了一种网页正文抽取装置,包括网页表示部分,用于将网页表示为树状结构;节点有效性判断部分,用于判断所述树状结构中的每个节点是否为有效节点;以及正文信息组合部分,用于组合作为有效节点的叶子节点中所包含的正文信息,以得到所述网页的正文,其中,对于树状结构中的给定节点,如果在所述给定节点的儿子节点中预定类型的节点所占的比例小于或等于第一阈值,则所述节点有效性判断部分判定所述给定节点为有效节点。根据本发明的网页正文抽取方法和装置,不仅具有很好的通用性,而且处理速度快,只需要对代表网页的树状结构进行一次遍历即可得到网页正文的文档。另外,本发明还提供了相应的计算机可读存储介质和计算机程序产品。参照下面结合附图对本发明实施例的说明,会更加容易地理解本发明的以上和其它目的、特点和优点。在附图中,相同的或对应的技术特征或部件将采用相同或对应的附图标记来表示。附图中图1是根据本发明的一个实施例的网页正文抽取方法的流程图;图2是利用根据本发明的一个实施例的网页正文抽取方法而得到的网页的树状结构示意图;图3是利用根据本发明的一个实施例的网页正文抽取方法而得到的另一网页的树状结构示意图;图4是根据本发明的一个实施例的判断节点有效性过程的流程图;图5是根据本发明的一个实施例的正文信息抽取过程的流程图;以及图6是根据本发明的一个实施例的网页正文抽取装置的示意图。具体实施例方式下面参照附图来说明本发明的实施例。应当注意,为了清楚的目的,附图和说明中省略了与本发明无关的、本领域普通技术人员已知的部件和处理的表示和描述。应该了解,在开发任何这种实际实施例的过程中必须做出很多特定于实施方式的决定,以便实现开发人员的具体目标,例如,符合与系统及业务相关的那些限制条件,并且这些限制条件可能会随着实施方式的不同而有所改变。此外,还应该了解,虽然开发工作有可能是非常复杂和费时的,但对得益于本公开内容的本领域技术人员来说,这种开发工作仅仅是例行的任务。首先将参考附图,特别是图1至图5,描述根据本发明实施例的网页正文抽取方法的一般工作原理。图1是根据本发明的一个实施例的网页正文抽取方法的流程图。如图1所示,根据该实施例的网页正文抽取方法从SlOO开始。在步骤S102中,对网页进行预处理,以获取符合Web标准的网页。在此,提出所要处理的不符合网页标准的情况,并针对所提出的情况着重处理,使待处理的网页符合通用的网页标准。通常,网页主要由三部分组成,S卩,结构、表现和行为。对应的标准也分三方面,结构化标准语言主要包括XHTML和XML,表现标准语言主要包括CSS,行为标准主要包括对象模型(如W3CDOM)、ECMAScript等。这些标准大部分由W3C起草和发布,也有一些是其他标准组织制订的标准,比如ECMA(EuropeanComputerManufacturersAssociation)的ECMAScript标准。早期的时候,HTML标准还没有完全形成,无论是否正确地关闭了标记,或者甚至设计代码与格式化规则完全背离,都是没有关系的。标记的不匹配、缺少属性设置、不正确的嵌套等,这样或那样的错误都是由于缺少一个被广泛接受的标准而引起的,因为大多数浏览器都带有内置智能性,有一定的容错能力,很多网站开发者甚至都没意识到这些错误。因此,为了得到能够被统一处理的网页,就需要对网页进行预处理,以使网页标准化。所谓网页的标准化就是使待处理的网页符合网页标准。在本发明中,重点规范了网页的结构标准,也就是说使网页符合XHTML语言的要求。在根据本发明实施例中,针对网页的预处理,提出以下标准化处理时需要重点考虑的方面。当然,也可以根据实际情况,对不符合XHTML语言要求的其他情形进行处理,以使要处理的网页标准化。(1)“〈”和“〉”只能用来包含网页标记(tag),当在其它地方出现这两个符号时用"&lt;”和“&gt;”来代替。(2)所有的标记必须匹配,即每个开始标记都对应一个结束标记。(3)所有标记的属性值都必须放在引号中,如<ahref="www.w3c.org”>。(4)所有的标记必须是正确嵌套的。例如,<a>…<b>"*</a>…</b>是不正确的嵌套,正确的嵌套形式应该是<a>···<b>···</b>…</a>。在根据本发明实施例的方法中,在步骤S102可根据上面所提出的网页不规范情形等来处理网页,以使在网页中不存在上述不规范情况。可以用于上述网页预处理过程的网页标准化方法有很多,而且有很多免费的工具可供使用,比较有名的工具有HTMLTidy。当然也可以用其他的工具比如HTML-Kit来实现网页的标准化。HTMLTidy是一个核对和整理HTML网页的工具。该工具在检测和纠正深层嵌套的HTML网页时尤其有用处。通过使用HTMLTidy工具,可以把不规范的HTML网页转换成符合W3C标准的网页。在根据本发明的一个实施例中,使用HTMLTidy工具把HTML网页转换成XML格式的网页,更准确的说是转换为XHTML网页。XHTML和HTML的差别很细微但也很重要。XHTML可以被认为是符合XML语法的HTML4.01。XHTML和HTML的差别主要有(i)XHTML的元素必须有开始和结束标志。而HTML则不要求所有的元素都有结束标志,例如。(ii)空元素遵守XHTML规范,例如<br>应该被写成<br/>。(iii)属性值必须包含在双引号内。由此可见,这些区别和在本发明实施例中提出的标准化网页的要求基本一致,所以经过HTMLTidy处理后的网页可以认为是符合Web标准的网页。在步骤S102中对网页进行处理并获得符合Web标准的网页之后,在步骤S104中,将经过预处理的网页表示成树状结构。在此,定义用于表示节点的数据结构,并根据网页的结构信息,利用所定义的数据结构将网页表示为树状结构。之所以将网页表示为树状结构是因为树状结构能够更容易清晰直观地表示出网页内部各个节点间的包含和被包含关系。HTML本身具有很强的层次结构信息,因此把HTML网页表示为树状结构非常方便易行。此外,把网页表示成为树状结构也方便对网页的处理。根据处理的需要,在将网页表示成为树状结构时,对于给定节点,一般需要记录以下信息(a)用于回溯到给定节点的父节点的信息;(b)用于得到给定节点的全部儿子节点的信息;(c)用于找到给定节点的下一个兄弟节点的信息;(d)给定节点的类型;(e)给定节点的值;以及(f)给定节点的名称。这里应该指出的是,以上得到的树状结构有可能不完全是标准的树,因为所得到的树中同时也保存有节点间的兄弟关系。在上述信息中,必不可少的信息是(b)、(d)、(e),其余的信息是可选的。但是如果在建立树状结构的过程中同时得到这些信息,以后在处理网页的时候是很方便的。当然,也可以根据需要,对需要记录的信息进行增减,以便更好地表示网络的树状结构和树中各个节点之间的关系。其中,节点的类型有元素节点、文本节点、document节点、注释节点、属性节点等。元素节点是指HTML语言中的基本单元,如<a>、<div>等等都是元素节点。属性节点是指元素节点的属性信息,如对于<ahref=“http://www.baidu.com"></a>,href='’http://www.baidu.com"即是元素“a”的属性节点。文本节点是指包含文本信息的节点,如<span>text</span>中的“text”即是文本节点。document节点是所有节点的祖先节点。注释节点则是程序员在写HTML文档时所写的注释。节点的值针对不同节点类型其含义不同,对于文本节点和注释节点,节点值指的是文本内容和注释内容;而对于其他节点,节点值为NULL。节点的名称则是HTML网页中给出的节点的名字。在本发明的一个实施例中,构造的是DocumentObjectModel(DOM)树。当然也可以得到其他树,只要能够包含上述必不可少的信息即可。在本发明的一个实施例中,利用python语言的minidom模块得到经过预处理的HTML网页的DOM树,以供正文信息抽取处理使用。minidom模块也是本领域技术人员常用的一种工具。例如,对于包括以下HTML代码的网页,利用根据本发明的一个实施例的网页正文抽取方法而得到的该网页的树状结构示意图在图2中示出<html><head><title>Example</title></head><body>Just<b>a</b>Sample!</body></html>再例如,对于包括以下HTML代码的网页,利用根据本发明的一个实施例的网页正文抽取方法而得到的该网页的树状结构示意图在图3中示出<html><head><title>Example!</title></head><body><divid=〃divl">Justasample!</div><divid=〃div2〃><ahref="http://www.testl.com">testl</a><ahref="http://www.test2.com">test2</a><imgsrc="sample_pic.jpg"alt=""border="0〃>img</img></div></body>〈/html返回来参考图1,在步骤S104中将网页表示成树状结构之后,接着在步骤S106中逐一判断树状结构中的给定节点是否为有效节点,并且在步骤S108中组合作为有效节点的叶子节点中所包含的正文信息,以得到所处理的网页的正文。然后,根据本发明该实施例的网页正文抽取方法在步骤SllO结束。在步骤S108中的节点有效性判定,具体来说就是通过树状结构中给定节点的儿子节点中预定类型的节点所占的比例来判断该给定节点是否为有效节点。所谓无效节点是指与正文信息无关的节点,主要有广告节点,链接节点,导航节点,格式信息节点,脚本信息节点等等。对这些节点进行分析可以发现,样式节点和脚本节点都有明显的标签来表明,有着很明显的特点;而广告节点、链接节点、导航节点等都包含10着大量的链接信息和图片信息,可以说这些节点的主要内容就是那些URL链接。基于此分析,提出了根据节点儿子节点中链接节点和图片节点等所占的比例来判断有效节点的方法。与无效节点对应的就是有效节点。也就是说,在判断树状结构中的给定节点的有效性时,统计预定类型的节点,比如链接节点和图片节点,在给定节点的儿子节点中所占的比例,并且判断该比例是否大于预定阈值。如果该比例大于预定阈值,则判定该给定节点是无效节点;否则,如果该比例小于或等于预定阈值,则判定该给定节点是有效节点。图4是根据本发明的一个实施例的判断节点有效性的具体过程的流程图。如图4所示,根据本发明该实施例的节点有效性判断处理从步骤S400开始,并且在步骤S402输入待判断的节点。接着,在步骤S404判断待判定的给定节点是否为叶子节点。如果在步骤S404中确定该待判定的给定节点是叶子节点,则在步骤S422中判断该给定节点是否是文本节点。如果不是文本节点,则在步骤S424中判定该给定节点是无效节点。如果在步骤S422中确定该给定节点是文本节点,则在步骤S426中判断该给定节点父节点的类型。如果其父节点是style、script之类的节点,则在步骤S428中判定该给定节点为无效节点。如果在步骤S426中确定该给定节点的父节点不是style、script之类的节点,则在步骤S430中判断该给定节点中包含的文本的长度是否大于阈值B。如果文本长度大于阈值B,则在步骤S432中判定该给定节点为有效节点。如果在步骤S430中确定该给定节点中包含的文本的长度小于或等于阈值B,则在步骤S434中判断该给定节点的父节点是否是描述字体类型的,比如strong等。如果该给定节点的父节点是否是描述字体类型的,则在步骤S436中判定该给定节点为有效节点。否则,如果在步骤S434中确定该给定节点的父节点不是描述字体类型的节点,则在步骤S438中判定该给定节点为无效节点。这里,阈值B是经过统计得出的事先设定的值。另一方面,如果在步骤S404中判断的结果是该给定节点不是叶子节点,则要在步骤S406中判断该节点的类型是否为链接节点或图片节点。如果确定该给定节点是链接或者图片节点,则在步骤S408中判定该给定节点是有效节点,以防止误伤正文中的链接节点ο如果在步骤S406中确定该给定节点不是链接或者图片节点,则在步骤S410中判断该给定节点是否为脚本或样式节点。如果确定该给定节点是脚本或样式节点,则在步骤S412中判定该给定节点为无效节点。如果在步骤S410中确定该给定节点不是脚本或样式节点,则在步骤S414中统计在该给定节点的儿子节点中链接节点和图片节点所占的比例,并在步骤S416中判断该比例是否大于阈值A。如果所统计的比例大于阈值A,则在步骤S418中判定该给定节点为无效节点。如果在步骤S416中确定在该给定节点的儿子节点中链接节点和图片节点所占的比例小于或等于阈值A,则在步骤S420中判定该给定节点为有效节点。这里,阈值A也是经过统计得出的事先设定的值,该值是判断无效节点的重要依据。在以上各个步骤S424、S428、S432、S436、S438、S408、S412、S418、以及S420判定输入的待判断的给定节点为有效节点或无效节点之后,处理流程在步骤S440结束。以上结合图1至图4描述了根据本发明实施例的网页正文抽取方法的一般处理过程。下面将参考图5来详细描述根据本发明实施例的正文信息抽取的具体过程的流程图。如图5所示,根据该实施例的正文信息抽取处理的流程从步骤S500开始,并且在步骤S502和S504中进行初始化工作。首先在步骤S502中从网页树的根节点开始进行处理,在步骤S504中将根节点记录为当前要处理的节点并初始化节点栈和标记栈。其中,节点栈用于存放有效节点,标记栈用于存放与节点栈中的节点相对应的标记,所述标记指示所述节点的儿子节点是否已全部被访问。然后,在步骤S504完成初始化处理之后,在步骤S506中判断当前节点是否为空或节点栈是否为空。如果当前节点和节点栈均为空,则表明树状结构已被遍历完毕且节点栈中的节点也被处理完毕,过程在步骤S508结束。如果在步骤S506中确定当前节点和节点栈不为空,则表明尚有需要进行处理的节点,过程进行到步骤S510,在步骤S510中判断当前节点是否为空。如果当前节点不空,则在步骤S512中判断当前节点是否为有效节点。可以利用以上所述的节点有效性判断方法来判断当前节点是否为有效节点。如果在步骤S512中的判断结果是当前节点为有效节点,则在步骤S516中将当前节点放进节点栈中,将0放进标记栈中,并记录当前节点的第一个孩子为新的当前节点。其中,0表示当前节点的儿子节点未全部被访问过。然后,过程返回到步骤S510,以对下一个节点进行处理。如果在步骤S512中的判断结果是当前节点为无效节点,则在步骤S514中将当前节点记录为最近访问的节点,并将当前节点置空,然后过程返回到步骤S510。也就是说,如果当前节点是无效节点,则将该节点置空,使得不再对该节点和其所有儿子节点进行处理。另一方面,如果在步骤S510中判定当前节点为空,则过程进行到步骤S518,在步骤S518中判断节点栈是否为空。如果确定节点栈为空,则过程在步骤S508结束。如果在步骤S518中的判断结果是节点栈不空,则在步骤S520中取标记栈和节点栈的第一个元素。节点栈中的第一个元素即最近一次入栈的有效节点,标记栈中的第一个元素为指示该有效节点的所有儿子是否已被访问的标记。接着,在步骤S522中判断节点栈的第一个元素是否是叶子节点。如果步骤S522中的判断结果为节点栈中的第一个元素是叶子节点,则在步骤S534中输出该叶子节点的内容,即正文信息,并在步骤S536中将所述节点栈的第一个元素记录为最近访问的节点,然后分别对节点栈和标记栈进行弹栈。然后,过程返回到步骤S506。如果步骤S522中的判断结果为节点栈中的第一个元素不是叶子节点,则过程进行到步骤S524,在步骤S524中判断标记栈的第一个元素是否为0。如果标记栈的第一个元素不为0,表示节点栈中的第一个元素的所有儿子已被访问过,则过程进行到S526,在步骤S526中将节点栈的第一个元素记录为最近访问的节点,并且分别对节点栈和标记栈进行弹栈。然后,过程返回到步骤S506。如果步骤S524中的判断结果为标记栈的第一个元素为0,则在步骤S528中将最近访问节点的第一个兄弟记录为当前节点。接着,在步骤S530中判断该当前节点是否为空。如果该当前节点为空,则在步骤S532中对标记栈进行弹栈,变更将1放入标记栈,然后过程返回到步骤S506。如果步骤S530中的判断结果是当前节点不为空,则过程直接返回到步骤S506。根据以上过程,在遍历树状结构的同时逐个判断每个节点是否有效,并根据栈中的顺序来输出叶子节点的内容,最终得到整个网页的正文内容。在处理每一个节点的时候,首先根据有效性判断过程判断该节点的有效性。如果是有效节点,则把该节点入栈,再做进一步的处理;否则,直接抛弃该节点及其所有的子孙节点。最后所剩的有效节点中的叶子节点所包含的内容既是网页的正文信息。也就是说,在上述正文信息抽取过程中,提出根据网页节点的有效性来判断一个节点的子孙节点是否包含正文信息的思想。具体而言,如果一个节点为无效节点,则认为其所有子孙节点均为无效节点。尽管已参考图5描述了根据本发明实施例的正文信息抽取过程,但是本领域技术人员应当清楚,上述过程可以以各种不同的设计方式来实现。例如,在图5所示的正文信息抽取过程中,采取后根遍历在网页表示过程中所得到的DOM树的方法。当然,本领域技术人员可以理解,也可以使用其它遍历方式来遍历所述树。下面将以上文中给出的用HTML代码表示的网页为例,具体说明如何根据本发明的实施例的网页正文抽取方法最终得到网页中所包含的正文。例如,对于图2所示的网页的树状结构,首先从“html”节点开始,因为在该节点的儿子节点中链接节点和图片节点的数量为0,所占比例小于预定阈值,所以判定该“html”节点为有效节点。基于同样的原则,可以判断“head”、“title”、“b0dy”和“b”等非叶子节点均为有效节点。对于图2所示的叶子节点“Example”、“Just”、“a”和“Sample!”节点,由于它们都是文本节点,并且其父节点不是style、script之类的节点,并且这里假定其内容长度大于事先设定的阈值,因此将它们均判定为有效节点。最后,提取有效叶子节点中所包含的正文信息,可以得到以下正文内容ExampleJustaSample!可以看出图2中的树状结构的所有节点均为有效节点。在这里还需要指出的是,对于叶子节点“a”,如果确定其内容长度小于事先设定的阈值,则可以根据其父节点是用于调整字体显示的节点,同样将其判定为有效叶子节点。再例如,对于图3所示的网页的树状结构,同样首先从“html”节点开始,因为在该节点的儿子节点中链接节点和图片节点的数量为0,所占比例小于预定阈值,所以该节点“html”为有效节点。接下来可以依次判定“head”、“title”和“Example!”等均为有效节点ο同样,对于图3所示网页的树状结构中的“body”节点,该节点的儿子节点中链接节点和图片节点的数量也为0,所占比例小于预定阈值,所以判定该“body”节点为有效节点。然后,依次处理“divl”和“Justasample”节点,根据图4和图5所示的处理流程可以判定这两个节点均为有效节点。但是,到“div2”节点时,因为其儿子节点中图片节点和链接节点所占的比例为66.7%,大于事先设定的预定阈值,所以将该节点及其子孙节点均判定为无效节点。最后,提取有效节点中的叶子节点("Example!“和〃Justasample!“节点)所包含的文本信息,既可得到该网页的如下正文内容。Example!Justasample!以上结合图1至图5详细描述了根据本发明的实施例的网页正文抽取方法的基本原理和处理过程,下面将描述根据本发明实施例的网页正文抽取装置。图6是根据本发明的一个实施例的网页正文抽取装置600的示意图。如图6所示,根据该实施例的网页正文抽取装置600包括网页预处理部分602、网页表示部分604、节点有效性判断部分606和正文信息组织部分608。网页预处理部分602对要提取其正文内容的网页进行预处理,以使所述网页符合Web标准。网页表示部分604将经过网页预处理部分602预处理的网页表示为树状结构。节点有效性判断部分606判断网页表示部分604所得到的网页的树状结构中的每个节点是否为有效节点。正文信息组合部分608则组合节点有效性判断部分606判定为有效节点的叶子节点中所包含的正文信息,从而得到所述网页的正文。在此,对于网页表示部分604所得到的网页的树状结构中的给定节点,如果在所述给定节点的儿子节点中预定类型的节点所占的比例小于或等于第一阈值,则所述节点有效性判断部分606将该给定节点判定为有效节点。网页预处理部分602可以用上文提及的网页标准化工具比如HTMLTidy或HTML-Kit等来实施,这里不再详细描述。根据本发明的一个实施例,网页表示部分604可以包括定义用于表示节点的数据结构的单元、以及根据网页的结构信息利用所定义的数据结构将网页表示为树状结构的单元。网页表示部分604的详细处理过程可以参照上面对网页正文抽取方法中步骤S104的描述来进行,这里省去其详细描述,以避免不必要的重复。。同样,节点有效性判断部分606和正文信息组织部分608的具体处理过程分别与上面描述的网页正文抽取方法中的步骤S106和S108类似,因此,为了说明书的简洁起见,在此也不再对其进行详细描述。另外,在根据本发明的实施例的网页正文抽取装置的处理过程中也可以利用根据图4所描述的判断节点有效性过程以及图5所描述的正文信息抽取过程来实现相应的处理,从而高效地获取网页的正文内容。从以上描述可以看出,根据本发明的网页正文抽取方法和装置,不需要针对特定的数据源来编写对应的包装器或抽取规则,因此具有很好的通用性,能够方便地提取来自各种信息源的网页的正文信息。另外,根据本发明的网页正文抽取方法和装置,只需要对代表网页的树状结构进行一次遍历即可得到网页的正文信息,因此处理速度快,非常适用于现在飞速膨胀的网络信息世界。以上结合具体实施例描述了本发明的基本原理,但是,需要指出的是,对本领域的普通技术人员而言,能够理解本发明的方法和装置的全部或者任何步骤或者部件,可以在任何计算设备(包括处理器、存储介质等)或者计算设备的网络中,以硬件、固件、软件或者它们的组合加以实现,这是本领域普通技术人员在阅读了本发明的说明的情况下运用他们的基本编程技能就能实现的,因此在这里省略了详细说明。因此,基于上述理解,本发明的目的还可以通过在任何信息处理设备上运行一个程序或者一组程序来实现。所述信息处理设备可以是公知的通用设备。因此,本发明的目的也可以仅仅通过提供包含实现所述方法或者设备的程序代码的程序产品来实现。也就是说,这样的程序产品也构成本发明,并且存储有这样的程序产品的存储介质也构成本发明。显然,所述存储介质可以是任何公知的存储介质或者将来所开发出来的任何存储介质,因此也没有必要在此对各种存储介质一一列举。还需要指出的是,在本发明的装置和方法中,显然,各部件或各步骤是可以分解和/或重新组合的。这些分解和/或重新组合应视为本发明的等效方案。并且,执行上述系列处理的步骤可以自然地按照说明的顺序按时间顺序执行,但是并不需要一定按照时间顺序执行。某些步骤可以并行或彼此独立地执行。另外,本申请的术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括......,,限定的要素,并不排除在包括所述要素的过程、方法、物品或者装置中还存在另外的相同要素。虽然已经详细描述了本发明的具体实施方式,但是本领域的普通技术人员应当知道,本发明的保护范围不限于这里所公开的具体细节,而可以具有在本发明的精神实质范围内的各种变化和等效方案。权利要求一种网页正文抽取方法,包括将网页表示为树状结构;判断树状结构中的每一个节点是否为有效节点;以及组合作为有效节点的叶子节点中所包含的正文信息,以得到所述网页的正文,其中,对于树状结构中的给定节点,如果在所述给定节点的儿子节点中预定类型的节点所占的比例小于或等于第一阈值,则判定所述给定节点为有效节点。2.根据权利要求1所述的方法,其中,在将网页表示为树状结构之前还包括对网页进行处理,以获取符合Web标准的网页。3.根据权利要求2所述的方法,其中,通过后根遍历树状结构来判断树状结构中的每一个节点是否为有效节点。4.根据权利要求3所述的方法,其中,如果判定树状结构中的给定节点为无效节点,则抛弃所述给定节点及其所有子孙节点。5.根据权利要求4所述的方法,其中,将网页表示为树状结构包括定义用于表示节点的数据结构;以及根据所述网页的结构信息,利用所述数据结构将所述网页表示为所述树状结构。6.根据权利要求5所述的方法,其中,所述数据结构包括以下内容所述节点的类型;所述节点的值;用于找到所述节点的全部儿子节点的信息;用于回溯到所述节点的父节点的信息;用于找到所述节点的下一个兄弟节点的信息;以及所述节点的名称。7.根据权利要求1至6之任一所述的方法,其中,所述预定类型的节点为链接节点或图片节点中的至少一个。8.根据权利要求1至6之任一所述的方法,其中,对于树状结构中的给定非叶子节点,如果所述给定非叶子节点为链接节点或图片节点,则判定所述给定非叶子节点为有效节点;以及如果所述给定非叶子节点为脚本节点或样式节点,则判定所述给定非叶子节点为无效节点。9.根据权利要求1至6之任一所述的方法,其中,对于树状结构中的给定叶子节点,如果所述给定叶子节点不是文本节点,或者如果所述给定叶子节点是文本节点但所述给定叶子节点的父节点是脚本节点或样式节点,则判定所述给定叶子节点为无效节点。10.根据权利要求1至6之任一所述的方法,其中,对于树状结构中的给定叶子节点,如果所述给定叶子节点是文本节点,并且所述给定叶子节点的父节点不是脚本节点或样式节点,则在所述给定叶子节点的内容长度大于第二阈值时,判定所述给定叶子节点为有效节点o11.根据权利要求10所述的方法,其中,在所述给定叶子节点的内容长度小于或等于第二阈值时,如果所述给定叶子节点的父节点是用于调整字体显示的节点,则判定所述给定叶子节点为有效节点。12.一种网页正文抽取装置,包括网页表示部分,用于将网页表示为树状结构;节点有效性判断部分,用于判断所述树状结构中的每个节点是否为有效节点;以及正文信息组合部分,用于组合作为有效节点的叶子节点中所包含的正文信息,以得到所述网页的正文,其中,对于树状结构中的给定节点,如果在所述给定节点的儿子节点中预定类型的节点所占的比例小于或等于第一阈值,则所述节点有效性判断部分判定所述给定节点为有效节点。13.根据权利要求12所述的装置,还包括网页处理部分,用于对将要由网页表示部分表示为树状结构的网页进行处理,以获取符合Web标准的网页。14.根据权利要求13所述的装置,其中,所述节点有效性判断部分通过后根遍历树状结构来判断树状结构中的每一个节点是否为有效节点。15.根据权利要求14所述的装置,其中,如果所述节点有效性判断部分判定树状结构中的给定节点为无效节点,则抛弃所述给定节点及其所有子孙节点。16.根据权利要求15所述的装置,其中,所述网页表示部分包括定义用于表示节点的数据结构的单元;以及根据所述网页的结构信息,利用所述数据结构将所述网页表示为所述树状结构的单兀。17.根据权利要求16所述的装置,其中,所述数据结构包括以下内容所述节点的类型;所述节点的值;用于找到所述节点的全部儿子节点的信息;用于回溯到所述节点的父节点的信息;用于找到所述节点的下一个兄弟节点的信息;以及所述节点的名称。18.根据权利要求12至17之任一所述的装置,其中,所述预定类型的节点为链接节点或图片节点中的至少一个。19.根据权利要求12至17之任一所述的装置,其中,对于树状结构中的给定非叶子节点,如果所述给定非叶子节点为链接节点或图片节点,则所述节点有效性判断部分判定所述给定非叶子节点为有效节点;以及如果所述给定非叶子节点为脚本节点或样式节点,则所述节点有效性判断部分判定所述给定非叶子节点为无效节点。20.根据权利要求12至17之任一所述的装置,其中,对于树状结构中的给定叶子节点,如果所述给定叶子节点不是文本节点,或者如果所述给定叶子节点是文本节点但所述给定叶子节点的父节点是脚本节点或样式节点,则所述节点有效性判断部分判定所述给定叶子节点为无效节点。21.根据权利要求12至17之任一所述的装置,其中,对于树状结构中的给定叶子节点,如果所述给定叶子节点是文本节点,并且所述给定叶子节点的父节点不是脚本节点或样式节点,则在所述给定叶子节点的内容长度大于第二阈值时,所述节点有效性判断部分判定所述给定叶子节点为有效节点。22.根据权利要求21所述的装置,其中,在所述给定叶子节点的内容长度小于或等于第二阈值时,如果所述给定叶子节点的父节点是用于调整字体显示的节点,则所述节点有效性判断部分判定所述给定叶子节点为有效节点。全文摘要本发明公开了一种网页正文抽取方法和装置。根据本发明一个实施例的网页正文抽取方法包括将网页表示为树状结构;判断树状结构中的每一个节点是否为有效节点;以及组合作为有效节点的叶子节点中所包含的正文信息,以得到所述网页的正文,其中,对于树状结构中的给定节点,如果在所述给定节点的儿子节点中预定类型的节点所占的比例小于或等于第一阈值,则判定所述给定节点为有效节点。文档编号G06F17/30GK101872350SQ20091013736公开日2010年10月27日申请日期2009年4月24日优先权日2009年4月24日发明者于浩,孟遥,王主龙,贾晓建申请人:富士通株式会社
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1