提取网页正文内容的方法和系统的制作方法

文档序号:6385350阅读:388来源:国知局

专利名称::提取网页正文内容的方法和系统的制作方法
技术领域
:本发明涉及互联网信息处理领域,特别是涉及一种提取网页正文内容的方法和系统。
背景技术
:随着互联网的迅速发展,互联网上的信息量以几何级数倍增。人们需要在海量的信息库中查找自己需要的信息,并且可能需要对获得的信息进行进一步的加工和分析。但是很多原始内容为了方便用户浏览而加入的导航链接、出于商业利益而加入的广告链接、版权信息以及相关主题阅读推荐链接等。这些信息掺杂在网页中,影响了用户对主题内容的浏览。如何从包含大量噪音内容的网页中将正文信息准确、完整地提取出来成为了研究课题。目前常用的方案有如下两种第一种方式是米用RSS(简易信息聚合,也叫聚合内容,是一种描述和同步网站内容的格式)种子文件作为信息源。由于RSS种子文件通常是按照标准的RSS规范编写的,通过简单的XML解析技术即可分离出需要的标题、发布时间、正文内容等信息,例如,RSS阅读器都米用这一方式。第二种方式是直接采用某些特定的网站的WEB页面作为信息源,根据WEB页面的编码特点开发专有的解析器来获取需要的信息。目前使用的大部分新闻阅读客户端都采用这一方式。然而,对于第一种方式,由于很多网站并没有提供RSS种子,且很多网站即使提供了RSS种子,但为了不影响其网站的流量,种子文件中通常只包含导读内容。这就导致很多信息被排除在可选择范围之外,也可能导致用户获得的信息不完整。对于第二种方式,这会带来大量的定制性开发,同时较为硬性的排版识别要求会因为目标网站排版的不断变化而带来许多维护性开发。而这些定制性和维护性的开发带来工作量的攀升导致它只能覆盖有限的主流网站,同样会导致许多信息被排除在可选范围之外。因此,目前对于网页主要内容进行提取需要解决的问题是覆盖面窄、可维护性差。
发明内容本发明的目的在于提供一种提取网页正文内容的方法和系统,其覆盖面广、可维护性强。本发明的目的通过如下技术方案实现一种提取网页正文内容的方法,包括如下步骤获取html源文件,并将该html源文件转化为字符流;剔除所述字符流中的无效标签;将剩余的标签转化为标签树,并将该标签树转换成标签队列;对所述队列标签中的各标签进行标签处理直到队列为空,获得有效标签集;将有效标签集转化成文本,返回为正文。一种提取网页正文内容的系统,包括获取模块,用于获取html源文件,并将该html源文件转化为字符流;过滤模块,用于剔除所述字符流中的无效标签;标签树生成模块,用于将剩余的标签转化为标签树,并将该标签树转换成标签队列;遍历标签队列模块,用于对所述队列标签中的各标签进行标签处理直到队列为空,获得有效标签集;正文确定模块,用于将有效标签集转化成文本,返回为正文。依据上述本发明的方案,其是在获取html源文件,并将该html源文件转化为字符流后,剔除该字符流中的无效标签,再将剩余的标签转化为标签树,并将该标签树转换成标签队列,对所述队列标签中的各标签进行标签处理获得有效标签集,将有效标签集转化成文本,返回为正文,由于在整个处理过程中,仅仅是从html标签层面处理html源文件,而未借助其他层面的信息,具有很高的通用性,覆盖面广,即使网页结果复杂,含有多种干扰信息,也能有效的提取网页的正文部分,针对性强,同时定制性开发少,可维护性强。图1为本发明提取网页正文内容的方法实施例的流程示意图;图2为本发明提取网页正文内容的系统实施例的结构示意图;图3为应用本发明提取网页正文内容前的原始网页;图4为应用本发明提取网页正文内容的结果示意图。具体实施例方式下面结合实施例及附图对本发明作进一步阐述,但本发明的实现方式不限于此。参见图1所示,为本发明的提取网页正文内容的方法实施例的流程示意图。如图1所示,该实施例中的提取网页正文内容的方法包括如下步骤步骤SlOl:获取html源文件,并将该html源文件转化为字符流,进入步骤S102;步骤S102:剔除所述字符流中的无效标签,进入步骤S103;步骤S103:将剩余的标签转化为标签树,并将该标签树转换成标签队列,进入步骤S104;步骤S104:对所述队列标签中的各标签进行标签处理获得有效标签集,进入步骤S105;步骤S105:根据所述有效标签集获得文本,返回为正文。据此,依据本实施例的方案,其是在获取html源文件,并将该html源文件转化为字符流后,剔除所述字符流中的无效标签,再将剩余的标签转化为标签树,并将该标签树转换成标签队列,对所述队列标签中的各标签进行标签处理直到队列为空,获得有效标签集,将有效标签集转化成文本,返回为正文,由于本发明针对所要抽取的网页正文是从html标签层面进行处理,从标签名称和标签属性上判断标签的功能,能够实现文本实体的自动处理功能,具有很高的通用性,覆盖面广,即使网页结构复杂,含有多种干扰信息,也能有效的提取网页的正文部分,针对性强,同时定制性开发少,可维护性强。下面详细描述上述各个步骤。首先,在步骤SlOl中,获取html源文件可以采用现有的方式,在此不予赘述,上述字符流可以是将UTF-8编码的字符流,UTF-8字符集能存储绝大多数网页的正文编码,同一的编码有利于后续字符流处理程序,但也不限于UTF-8编码这种编码方式。接着,在步骤S102中,剔除无效标签可以包括去除噪声标记过程,这可以加快后续进程,进而提高提取网页正文的效率,包括删除注释、脚本以及“head”标签中的内容等噪声标记,这些噪声标记是存在于html源文件中,对于网页正文内容提取不但没有帮助作用,反而会对正文提取造成干扰的噪声标记块,例如,用户开发者对于网页源代码进行注释的注释块(〈!—.*—>),或者用于辅助功能的脚本块(<(no)script.*</(no)script)等。在其中一个实施例中,剔除无效标签还可以包括剔除所述字符流中的第一标签和第二标签过程;所述第一标签主要是用于对文本的显示方式做微幅调整的标签,如改变字体、颜色、字号、粗细等等,由于它们的存在与否不改变页面的布局,一般这些标签不影响网页分块,对提取网页正文内容无帮助,所以一般先将这类标签去除,第一标签一般包括"A"、"ABBR"、"ACRONYM"、"AREA"、"B"、"BASE"、"BASEFONT"、"BDO"、BIG"、"Hmr、"πι/7、"OE"、"幌"、"τ'、"r^"、"μ"、"爾"、"H"、"、"ffi"、"κ"、"κ"、"Η6"、"I"、"INS"、"KBD;/、”LABLE"、"SMALL"、”STRIKE"、"STRONG"、"SUB",〃slp〃、〃q〃、〃s〃、〃mp"、〃讀〃、〃mo"、〃mxr、〃imm"、〃u〃、〃π〃、〃var〃、"0:SMARTTAGTYPE";所述第二标签包括未对网页布局起帮助作用且从属于其他标签的标签,这类标签是指从属于其他类别的标签,由于它们一般不单独出现,对网页布局的影响体现在其所从属的主标签中,所以为了加快后续的进程,也可以将这类标签在删除无效标签的过程中就进行删除,第二标签一般包括"FRAME"、"INPUT"、"ISINDEX"、"LEGEND"、"UM"、"M\P"、"IVETA"、"CPnCN"、"(PKKIP"、"PAM"、"TD"、"TH"、"IR"、"ΚΣΤ、"ITILE"。再接着,在步骤S103中将剩余的标签转化为标签树,html即超文本标记语言,是标准通用标记语言的一个子集,通过neko或者htmlparser等解析工具可以方便地把html源代码表示成标记书的形式,这里由于在步骤S102中已删除了一些无效标签,则是将剩余标签转换成标签树,并将该标签树转换成标签队列,转换方式可以是先序遍历的方式、也可以是后续遍历的方式,或者其他方式。由于html是一种格式化的语言,其文本信息需要放在html标签中,再由标签提供对信息位置、显示方式等修饰,上述标签树则是由上到下组成的树状结构,每个节点对应一个标签,夹在“>”和“<”之间的文本内容为文本节点,含有文本内容最多的文本节点为最大文本节点,与从〈title〉标签中提取出来的内容最相似的文本节点则为标题文本节点,其中,最大文本节点的选择标准可以是含有最多标点符号的文本节点为最大文本节点,被计算在内的标点符号有[,O;、!?!?];标题文本节点的选择标准可以是与从标签〈title〉中提取出来的内容在位置O开始匹配的最长文本节点为标题文本节点。树节点的选择逻辑如果最大文本节点和标题文本节点都存在,则试着从下往上去找最大文本节点和标题文本节点的第一个共同的父节点,如果这个父节点不是root节点,则这个父节点就是所要选择的节点。如果除了父节点之外没有其他共同的父节点,则查看包含最大文本节点的第I级(从下往上)div或table父节点,如果此div/table父节点含有的文本的长度超过整个web页面的文本长度的预设比例(例如30%),则此div/table父节点就是所要选择的节点;如果此div/table父节点的文本长度不超过整个web页面text长度的预设比例,则包含标题文本节点的第2级(从下往上)div/table父节点就是所要选择的节点;如果只有标题文本节点,则标题文本节点的第2级(从下往上)div/table父节点就是所要选择的节点。如果只有最大文本节点,则最大文本节点的第I级(从下往上)div/table父节点就是所要选择的节点。在步骤S104中,获得的有效标签集是指对于网页正文提取有帮助作用的标签的集合,对所述队列标签中的各标签进行标签处理获得有效标签集的过程可以是若所述队列标签中的标签为第三标签或第四标签,则直接将所述第三标签或第四标签保存到有效标签集,若所述队列标签中的标签为第五标签,则根据所述第五标签对应文本的长度将该第五标签保存到有效标签集或者合并到对应的父标签,若所述队列标签中的标签为所述第三标签、第四标签和第五标签外的其它标签,则直接合并到对应的父标签后重新插入所述标签队列中。其中,第三标签是指那些可以直接被认定是一个网页块的根标签,可以直接将其加入网页块池,这类标签主要有"HEAD"、"SCRIPT"、"STYLE"、"OBJECT"、"FIELDSET"、"FRAMESET"、"IFRAME;/;第四标签是指能够影响到网页的显示效果,改变文字布局,如果一颗html子树中包括多个第四标签,则该子树单独成块的可能性增加,这类标签主要包括〃P"、、〃UL"、〃0L〃、〃DL〃、〃DIR"、〃LI"、〃DT〃、〃BLOCKQUOTE"、〃ADDRESS"、"BR"、"HR"、"COL"、"C0LGR0UP"、"BK"、"MENU"、"SELECT";第五标签是指那些通常都代表一个网页块,只有时在其内容过少,需要跟其他节点合并成一个网页块,或者在特殊情况下其内部没有可见字符,因而遇到这种标签,就需要判断其单独作为一个网页块的条件是否已成熟,例如判断文本长度是否达到阈值,若达到则可以认为该标签单独作为一个网页块的条件已成熟,则可以将其加入网页块池,若未达到阈值则可以认为该标签单独作为一个网页块的条件尚未成熟,需要将其合并到对应的父标签第五标签主要包括"DIV"、"TD"、"TABLE"、"FORM"、"FIELDSET"、"CENTER"、"N0FRAMES"、"NOSCRIPT"、"PRE"、"BODY"、"HTML"等,然而,需要注意的是,"BODY"、"HTML"两个标签也作为第五标签,原因是这样可以防止分块后网页内部文字的遗漏,这样的话,即使有遗漏,也会至少包含在"HTML"这个最后把关的标签中。由于在不同的应用中,对网页分块会有些不同的要求。例如,在进行新闻网页的数据挖掘的工作中,需要使用到网页分块,但是对于这类网页,往往特别需要提取该新闻网页的发布日期和时间,而这部分内容通常是在新闻标题与新闻正文之间的一小行文字,上述的网页分块并不会将其单独提取成一个网页块,这时可以根据用户的需要定制一些标签,具体的步骤可以是接收定制指令;根据所述定制指令添加与该定制指令相对应的标签到所述有效标签集中,该定制指令为添加指令,该添加指令可以是普通的标签,如“TITLE”等,也可以是正则表达式,凡是其内部文字满足该正则表达式的第三标签、第四标签和第五标签,都将被单独提取为网页块。也可能是在实际情况中,需要特别去掉一些网页块,也可以是在上述步骤S104之后,包括步骤接收定制指令,该定制指令是删除指令,根据该删除指令删除有效标签集中与该删除指令对应的标签。需要说明的是,上述网页块池是指那些可以保留不需要进一步处理的html代码块,网页块池中的网页块可以是以QuarkElement的格式存储,而QuarkElement类中包括原来的html子树的DomTree结构和其他相关信息,同时在上述遍历的过程中,即使有的网页块从html结构上来说包含在更高层的网页块之下,但在QuarkElement中也消除了包含关系,所有网页块都互相独立,互不包含。根据上述本发明的提取网页正文内容的方法,本发明还提供一种提取网页正文内容的系统,以下就本发明的提取网页正文内容的系统的具体示例进行详细说明。图2中示出了本发明的提取网页正文内容的系统实施例的结构示意图。依据不同的考虑因素,在具体实现本发明的提取网页正文内容的系统时,可以包含图2中所示的全部,也可以只包含图2中所示的其中一部分。首先,以提取网页正文内容的系统包括获取模块201、过滤模块202、标签树生成模块203、遍历标签队列模块204、正文确定模块205为例进行说明,其中获取模块201,用于获取html源文件,并将该html源文件转化为字符流,其中,,获取html源文件可以采用现有的方式,在此不予赘述,上述字符流可以是将UTF-8编码的字符流,UTF-8字符集能存储绝大多数网页的正文编码,同一的编码有利于后续字符处理程序,但也不限于UTF-8编码这种编码方式;过滤模块202,用于剔除所述字符流中的无效标签,其中,剔除无效标签可以包括去除噪声标记过程,可以加快后续进程,进而提高提取网页正文的效率,包括删除注释、脚本以及“head”标签中的内容等噪声标记,这些噪声标记是存在于html源文件中但又对于网页正文提取不但没有帮助作用,反而会对正文提取造成干扰的噪声标记块;标签树生成模块203,用于将剩余的标签转化为标签树,并将该标签树转换成标签队列,其中,将该标签树转换成标签队列转换方式可以是先序遍历的方式、也可以是后续遍历的方式,或者其他方式;遍历标签队列模块204,用于对对所述队列标签中的各标签进行处理获得有效标签集,其中,获得的有效标签集是指对于网页正文提取有帮助作用标签的集合;正文确定模块205,用于将所述有效标签集转化成文本,返回为正文。据此,依据本实施例的方案,其是在获取模块201获取html源文件,并将该html源文件转化为字符流后,过滤模块202剔除所述字符流中的无效标签,标签树生成模块203将剩余的标签转化为标签树,并将该标签树转换成标签队列,遍历标签队列模块204对所述队列标签中的各标签进行标签处理直到队列为空,获得有效标签集,正文确定模块205将有效标签集转化成文本,返回为正文,由于本发明针对所要抽取的网页正文是从html标签层面进行处理,从标签名称和标签属性上判断标签的功能,能够实现文本实体的自动处理功能,具有很高的通用性,覆盖面广,即使网页结构复杂,含有多种干扰信息,也能有效的提取网页的正文部分,针对性强,同时定制性开发少,可维护性强。在其中一个实施例中,所述过滤模块203可以剔除所述字符流中的第一标签和第二标签,所述第一标签包括用于对文本的显示方式做微幅调整的标签,所述第二标签包括未对网页布局起作用且附属于其他标签的标签,其中,第一标签和第二标签如上述方法实施例中所述,在此不予赘述。在其中一个实施例中,给出了遍历标签队列模块204的具体工作方式,遍历标签队列模块204可以遍历所述队列标签中的各标签,若所述队列标签中的标签为第三标签或第四标签,则直接将所述第三标签或第四标签保存到有效标签集,若所述队列标签中的标签为第五标签,则根据所述第五标签对应文本的长度将该第五标签保存到有效标签集或者合并到对应的父标签,若所述队列标签中的标签为所述第三标签、第四标签和第五标签外的其它标签,则直接合并到对应的父标签后重新插入所述标签队列中,其中,第三标签、第四标签、第五标签如上述方法实施例中所述,在此不予赘述。由于在不同的应用中,对网页分块会有些不同的要求。例如,在进行新闻网页的数据挖掘的工作中,需要使用到网页分块,但是对于这类网页,往往特别需要提取该新闻网页的发布日期和时间,而这部分内容通常是在新闻标题与新闻正文之间的一小行文字,上述的网页分块并不会将其单独提取成一个网页块,这时可以根据用户的需要定制一些标签,为此,在其中一个实施例中,本发明的的提取网页正文内容的系统,还可以包括连接在所述遍历标签队列模块和所述正文确定模块之间的定制模块206,该定制模块206包括添加单元2061,用于接收添加指令,根据所述添加指令添加与该添加指令相对应的标签到所述有效标签集中。也可能是在实际情况中,需要特别去掉一些网页块,为此,在其中一个实施例中,本发明的提取网页正文内容的系统,也可以包括连接在所述遍历标签队列模块和所述正文确定模块之间的定制模块206,该定制模块206包括删除单元2062,删除单元2062用于接收删除指令,根据所述删除指令删除所述有效标签集中与该删除指令相对应的标签。应用本发明对如图3所示的原始网页进行网页正文提取,提取结果如图4所示,有图4可见,经过处理后,网页的引导页、导航栏、广告栏、推荐信息都被全部过滤了,但是包括标题、小标题、作者、新闻内容等正文信息都被完整保留了,本发明可以达到很好的提取效果,同时,提取效率较传统方式有显著提高。以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。权利要求1.一种提取网页正文内容的方法,其特征在于,包括如下步骤获取html源文件,并将该html源文件转化为字符流;剔除所述字符流中的无效标签;将剩余的标签转化为标签树,并将该标签树转换成标签队列;对所述队列标签中的各标签进行处理获得有效标签集;将所述有效标签集转化成文本,返回为正文。2.根据权利要求1所述的提取网页正文内容的方法,其特征在于,所述剔除所述字符流中的无效标签包括步骤剔除所述字符流中的第一标签和第二标签,所述第一标签包括用于对文本的显示方式做微幅调整的标签,所述第二标签包括未对网页布局起作用且附属于其他标签的标签。3.根据权利要求1所述的提取网页正文内容的方法,其特征在于,所述对所述队列标签中的各标签进行处理获得有效标签集包括步骤遍历所述队列标签中的各标签,若所述队列标签中的标签为第三标签或第四标签,则直接将所述第三标签或第四标签保存到有效标签集,若所述队列标签中的标签为第五标签,则根据所述第五标签对应文本的长度将该第五标签保存到有效标签集或者合并到对应的父标签,若所述队列标签中的标签为所述第三标签、第四标签和第五标签外的其它标签,则直接合并到对应的父标签后重新插入所述标签队列中。4.根据权利要求3所述的提取网页正文内容的方法,其特征在于,所述对所述队列标签中的各标签进行处理获得有效标签集还包括步骤接收定制指令,该定制指令为添加指令;根据所述添加指令添加与该添加指令相对应的标签到所述有效标签集中。5.根据权利要求1所述的提取网页正文内容的方法,其特征在于,在所述对所述队列标签中的各标签进行处理获得有效标签集后,所述将有效标签集转化成文本,返回为正文步骤前还包括步骤接收定制指令,该定制指令为删除指令;根据所述删除指令删除所述有效标签集中与该删除指令相对应的标签。6.一种提取网页正文内容的系统,其特征在于,包括获取模块,用于获取html源文件,并将该html源文件转化为字符流;过滤模块,用于剔除所述字符流中的无效标签;标签树生成模块,用于将剩余的标签转化为标签树,并将该标签树转换成标签队列;遍历标签队列模块,用于对对所述队列标签中的各标签进行处理获得有效标签集;正文确定模块,用于将所述有效标签集转化成文本,返回为正文。7.根据权利要求6所述的提取网页正文内容的系统,其特征在于,所述过滤模块剔除所述字符流中的第一标签和第二标签,所述第一标签包括用于对文本的显示方式做微幅调整的标签,所述第二标签包括未对网页布局起作用且附属于其他标签的标签。8.根据权利要求6所述的提取网页正文内容的系统,其特征在于,所述遍历标签队列模块遍历所述队列标签中的各标签,若所述队列标签中的标签为第三标签或第四标签,则直接将所述第三标签或第四标签保存到有效标签集,若所述队列标签中的标签为第五标签,则根据所述第五标签对应文本的长度将该第五标签保存到有效标签集或者合并到对应的父标签,若所述队列标签中的标签为所述第三标签、第四标签和第五标签外的其它标签,则直接合并到对应的父标签后重新插入所述标签队列中。9.根据权利要求6所述的提取网页正文内容的系统,其特征在于,还包括连接在所述遍历标签队列模块和所述正文确定模块之间的定制模块,该定制模块包括添加单元,用于接收添加指令,根据所述添加指令添加与该添加指令相对应的标签到所述有效标签集中。10.根据权利要求6或9所述的提取网页正文内容的系统,其特征在于,还包括连接在所述遍历标签队列模块和所述正文确定模块之间的定制模块,该定制模块包括删除单元,用于接收删除指令,根据所述删除指令删除所述有效标签集中与该删除指令相对应的标签。全文摘要本发明提供一种提取网页正文内容的方法和系统,其方法包括步骤获取html源文件,并将该html源文件转化为字符流;剔除所述字符流中的无效标签;将剩余的标签转化为标签树,并将该标签树转换成标签队列;对所述队列标签中的各标签进行处理获得有效标签集;将所述有效标签集转化成文本,返回为正文。本发明具有很高的通用性,覆盖面广,即使网页结果复杂,含有多种干扰信息,也能有效的提取网页的正文部分,针对性强,同时定制性开发少,可维护性强。文档编号G06F17/30GK103049536SQ20121057019公开日2013年4月17日申请日期2012年12月25日优先权日2012年11月1日发明者王海山申请人:广州汇讯营销咨询有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1