网页新闻抓取(Web上信息的重要表现形式(图)专利(组图))
优采云 发布时间: 2022-02-01 17:18网页新闻抓取(Web上信息的重要表现形式(图)专利(组图))
专利名称:一种从新闻网页中提取文本信息的方法
技术领域:
:本发明属于网页信息分析与处理
技术领域:
,具体涉及一种新闻网页正文信息的提取方法。
背景技术:
: 互联网的飞速发展,使得互联网即Web上的信息量每天都以惊人的速度增长。许多公司经常需要各种信息,并且通常从互联网上*敏*感*词*采集信息。每个企业都应该关注的问题。由于目前的信息处理技术针对的是纯文本格式的内容,而Web上的信息主要以静态Html的形式存在,如何将Web上Html形式的信息采集转换成有用价值 文本格式的信息便于后续信息处理,已成为亟待解决的技术问题。Web 上一种重要的信息形式是新闻。每天各大门户网站网站都会添加大量各种新闻。如何采集这些新闻信息成为Web信息采集问题的重要组成部分。通常,一个新闻网页,除了主要的新闻内容(通常称为网页正文)外,还收录大量与新闻内容无关的信息(如广告、网页导航信息、版权等)。信息等。为方便起见,以下将这些与新闻无关的信息统称为广告),如何从新闻网页中准确提取新闻,去除与新闻信息无关的广告等其他信息,尽量减少原版的失效网页修改引起的网页爬取方式。也是目前需要解决的技术问题。现在,网络上的新闻信息大部分来自于重要的门户网站,而这些网站的新闻页面往往是模板背景生成的,而且它们的风格和风格在一定时期内是一致的的时间。的。目前,Internet 上的大部分网页都是用 HTML 语言编写的。
Html语言提供的标签主要用于控制网页内容的显示格式,如<table>、<tr>、<td>、<th>用于绘制表格;<li>, <ol>, <ul> 用于表示一个列表。这些标签的使用没有规律,网页设计师可以随意设计。但不同种类的数据一般放在不同的显示单元中。经过对主要网站新闻页面的实际分析,结果表明,要提取的新闻页面中的大部分文本信息都存在于Html标签“<table>”和“<div>”中。传统的网页数据提取方法是通过包装器从网页中提取有趣的数据。包装器根据信息模式识别的知识,从固定的信息源中提取相关内容,并以固定的形式表达出来。早期,最简单的包装器是通过人工分析目标网页的结构特征提取信息,然后编写目标软件来实现的。这种方法需要大量的人工干预,成本高;后来,引入了一些模式识别。然而,到目前为止,获取包装器所需的信息模式识别知识仍然是一项耗时耗力的任务,需要很高的智能性。因此,目前网页数据抽取的研究热点之一就是探索简单的获取和构建一个wrapper。所需规则的有效方法。现在,
TSIMMIS 系统中的包装器需要手动编写数据提取规则。规则放置在特殊文件中,规则的形式为 [variables, source, pattern]。其中,variables保存提取结果,source保存输入,pattern保存source中数据的模式信息;variables 可以作为以下规则的来源,文件中的最后一条规则执行完后,最后的提取结果保存在 variables 中。这种方法需要人工编写规则,费时费力,容易出错,维护困难。XWRAP 系统中的包装器采用*敏*感*词*的方式获取数据抽取规则。它提供了友好的人机交互界面。用户可以根据系统的指导完成数据抽取规则的编写。最后,系统为特定的数据源生成一个用java语言编写的包装器。在数据提取之前,XWRAP 系统会检查网页,纠正任何不符合规范的语法错误和标签,并将网页解析成树。上面介绍的几种包装器都是基于一定的固定网页架构,按照固定的规则或模式提取数据,具有比较大的局限性。由于网页结构的复杂性和不规则性,一旦网页被修改,网页结构发生变化,原来适用的包装器就不能再使用了。信息来源。如前所述,目前的网页数据抽取工具都需要针对特定的数据源编写相应的包装器或抽取规则。所以,如果信息来自多个信息源,则需要很多包装器,包装器的生成和维护就成为一项复杂的工作。对于互联网上存在的具有不同结构风格的新闻网页的文本信息提取任务,使用包装器的成本非常高。
发明内容针对现有技术中存在的缺陷,本发明的目的在于提供一种新闻网页正文信息的提取方法。就网页中的数据信息而言,可以实现对各种不同结构的模板生成的一系列新闻网页内容的自动提取,提高网页信息提取的效率和准确性。为了实现上述目的,本发明采用的技术方案是一种新闻网页文本信息的提取方法,包括以下步骤(1)对网页进行归一化预处理,使其满足Html语言标准,然后根据Html语言的<table>和<div>标签,解析所有新闻网页的Html数据,得到Html树;(2)将是模板生成的两个网页的Html树,来自同一个站点在时间上相邻的两个网页比较Html树的每一层数据,去掉table节点或div节点坐标相同,信息相同;(3)细化Html树中各层表节点中数据的标识,区分标题信息和内容信息;(4)中的数据Html树中的每个节点经过重组处理后,提取出需要的数据信息。进一步地,为了本发明有更好的效果,步骤(1)解析Html树中所有新闻网页的Html数据,以及要构造 Html 树,请使用以下方法 1) 初始化一个空数组T,用于保存Html树中的每个表结构;表结构用于表示表节点,形式为structTable{该表节点的坐标;此表节点中收录的信息;};上面表格节点的坐标,也就是表格节点在整个Html树中的位置,用一个向量来表示,即每个表格节点对应一个向量v=(n1, n2, n3, . .., nk),v的第i个分量ni的含义是Html树中第i层的第ni个节点;2) 上面表格节点的坐标,也就是表格节点在整个Html树中的位置,用一个向量来表示,即每个表格节点对应一个向量v=(n1, n2, n3, . .., nk),v的第i个分量ni的含义是Html树中第i层的第ni个节点;2) 上面表格节点的坐标,也就是表格节点在整个Html树中的位置,用一个向量来表示,即每个表格节点对应一个向量v=(n1, n2, n3, . .., nk),v的第i个分量ni的含义是Html树中第i层的第ni个节点;2)
6)如果没有扫描到Html文档的末尾,继续扫描,转到步骤3),否则结束,返回存储Html树级信息的数组T。进一步地,为了使本发明有更好的效果,在步骤(2)中过滤数据,在删除不需要的数据信息时,采用如下方法将C和D设置为同一模板生成的两个释放时间相邻新闻网页,1)经过步骤(1),网页C的结构数组为T1;2)经过步骤(1),得到网页D的结构) 数组为 T2;3) 遍历 T1 中的每个表结构,并将 T1 中的每个结构设置为 S1,执行以下操作: a) 遍历 T2,在 T2 中找到与 S1 坐标值相同的结构, 设为S2;b) 判断S1中收录的信息是否与S2中收录的信息相同(链接文本除外),然后在T1中删除S1,在T2中删除S2。进一步,为了使本发明有更好的效果,在步骤(3)中,对Html树中各层表节点中的数据进行细化识别,当标题信息和内容信息区分,下面的方法使用1)来标识表节点中的结构如果这个结构中有多个title元素,则取第一个作为这个结构的标题,如果没有title元素,表示该表结构的标题为空。另外,为了使本发明有更好的效果,
本发明的效果是利用本发明的方法,可以处理来自通过模板生成网页的新闻站点的信息采集的任务,以及目标新闻的文本内容。即使网页被修改,也可以快速自动提取网页。需要重写程序,大大减少了人工干预,从而大大提高了网页信息提取的效率和准确性。本发明之所以有上述效果,是因为本发明所描述的方法采用了一种新的Html树解析方法,能够高效、准确地获知Html中各个表节点的坐标以及所收录的信息。还可以快速解析新模板的树结构信息,再对比新模板生成的网页,依然能够准确提取新闻文本信息。图1是本发明的流程图;图2为本发明具体实施例中解析Html树的流程图。具体实施方式下面结合实施例和附图对本发明的方法作进一步的说明。以从新浪新闻体育频道截取的1000个按时间顺序排列的新闻网页中提取文本信息为例,如图1所示,一种从新闻网页中提取文本信息的方法包括以下步骤(1)@ >使用第三方网页净化工具(例如,可以使用 tidy 工具)对 1000 个网页进行规范化和预处理,使其符合 Html 语言标准,然后根据 Html 语言中的 <table> 和 <div> 标签解析所有页面。获取新闻网页的Html数据,得到Html树;解析所有新闻网页的Html数据,构建Html树时采用如下方法。因为在本发明中,Html标签<table>和<div>功能相同,所以本发明以<table>为例说明,<div>的情况与<table>完全相似. 获取新闻网页的Html数据,得到Html树;解析所有新闻网页的Html数据,构建Html树时采用如下方法。因为在本发明中,Html标签<table>和<div>功能相同,所以本发明以<table>为例说明,<div>的情况与<table>完全相似. 获取新闻网页的Html数据,得到Html树;解析所有新闻网页的Html数据,构建Html树时采用如下方法。因为在本发明中,Html标签<table>和<div>功能相同,所以本发明以<table>为例说明,<div>的情况与<table>完全相似.
以如下Html片段为例(如前所述,只标注了感兴趣的<table>节点,//为注释),明确本发明涉及的谓词<table> //第一个<table>节点开始Text1<table>//第二个<table>节点开始Text2<table>//第三个<table>节点开始Text3</table>//第三个<table>节点结束Text4</table>//第二个<table>节点结束<table>//第四个<table>节点开始Text4</table>//第四个<table>节点结束</table>//第一个<table>节点结束取中间的Html内容每个表的开始字符(由<table>标记)和结束字符(由</table>标记)作为一个表节点,那么从上面的代码片段可以看出,在每个表节点内 您还可以嵌套其他表节点,例如,第三个表节点嵌套在第二个表节点内。
如果一个表节点 A 嵌套在另一个表节点 B 中,则 A 称为 B 的子节点,B 称为 A 的父节点。位于表节点 A 的开始字符和结束字符之间的 Html 内容,以及不位于该节点的任何子节点的首尾字符之间的,称为A中收录的信息。一个表节点对应的向量称为该表节点在Html树中的坐标。在上面的Html片段中,第二个表节点收录的信息是Text2和Text4,第三个表节点收录的信息是Text3。用直观的形式表达Html树层次结构的嵌套信息,即用一个向量来表示关心的表节点在整个Html树中的位置。每个表节点对应一个向量 v=(n1, n2, n3, ..., nk),v的第i个分量ni的含义是Html树中第i层的第ni个节点。如果一个表节点对应的向量是(1, 2, 3),那么这个表节点就是Html树第一层第一个表节点的第二个子节点的第三个子节点。上面的Html片段第三和第四个表节点的坐标分别是(1, 1, 1)和(1, 2))。表节点用结构体的形式表示,形式如下 structTable{此表节点表节点的坐标;此表节点收录的信息;};将Html文档转换为各个表节点的结构体时,使用如下方法1)初始化一个空数组T保存每个表结构;2)初始化一个栈,让栈底到栈顶的元素分别标记为a,a[1],a[2],a[3],...,0=a=a[1]=a [2]=a[3]=...; 并设置堆栈元素指针 p 指向堆栈的顶部元素。
由于最初栈中没有元素,可以假设p指向一个虚元素a[-1];3) 扫描待处理的 Html 文档,如果遇到 <table> 标签,即遇到新的表节点时,将栈元素指针 p 上移一个空格,然后将值加 1堆栈元素指针 p 指向的元素。设栈元素指针p指向的栈元素为a[k],则表节点A的坐标为从栈底元素a到a[k]形成的序列,即向量(a, a[1], a[2], ..., a[k]),从中获得表节点A的坐标;4)@ >如果遇到了一个</table>节点,即当一个表节点结束时,将栈元素指针p下移一个空格,并且此时构造一个新的表结构,将当前表节点的坐标和其中收录的信息存储在这个表结构中,然后将该结构添加到数组T的末尾;5) 如果遇到其他字符,将栈元素指针p指向的栈元素设置为a[k],则当前扫描的表节点的坐标为元素a到a[形成的序列k] 在栈底,即向量(a, a[1], a[2], ..., a[k])。将该字符添加到表节点收录的信息中的坐标为 (a, a[1], a[2], ..., a[k])。6)如果没有扫描到Html文档的末尾,继续扫描,转到步骤3),否则结束,返回存储Html树级信息的数组T。并将当前表节点的坐标和其中收录的信息存储在该表结构中,然后将该结构添加到数组T的末尾;5) 如果遇到其他字符,将栈元素指针p指向的栈元素设置为a[k],则当前扫描的表节点的坐标为元素a到a[形成的序列k] 在栈底,即向量(a, a[1], a[2], ..., a[k])。将该字符添加到表节点收录的信息中的坐标为 (a, a[1], a[2], ..., a[k])。6)如果没有扫描到Html文档的末尾,继续扫描,转到步骤3),否则结束,返回存储Html树级信息的数组T。并将当前表节点的坐标和其中收录的信息存储在该表结构中,然后将该结构添加到数组T的末尾;5) 如果遇到其他字符,将栈元素指针p指向的栈元素设置为a[k],则当前扫描的表节点的坐标为元素a到a[形成的序列k] 在栈底,即向量(a, a[1], a[2], ..., a[k])。将该字符添加到表节点收录的信息中的坐标为 (a, a[1], a[2], ..., a[k])。6)如果没有扫描到Html文档的末尾,继续扫描,转到步骤3),否则结束,返回存储Html树级信息的数组T。
将T1中的每个结构设置为S1,并进行如下操作 a) 遍历T2,在T2中找到与S1坐标值相同的结构设置为S2;b) 判断S1中收录的信息是否与S2中收录的信息相同(链接文本除外),然后在T1中删除S1,在T2中删除S2。(3)细化Html树中各层表节点中数据的标识,区分标题信息和内容信息;经过步骤(2),不必要的广告信息有被删除了,但是还是需要使用未过滤的表结构来提炼和识别内容,识别标题信息和内容信息。通常新闻的标题一般以大粗体的形式出现。在Html中,
因此,可以采取以下具体步骤来实现对表结构内容的精细化识别。1)对于表节点中的结构,判断结构信息中是否有title元素;2)如果结构有多个title元素,则取第一个作为结构的title ,如果没有title元素,则该表结构的title为空。(4)处理后对Html树中各个节点中的数据进行重组,提取出需要的数据信息。步骤(1)经过步骤(2)@)得到的表结构数组T > 和经过step(3)的处理,已经识别出数组T中每个结构体的信息,接下来要做的就是将这些数组T中的每个表结构所收录的信息组合起来,可以使用以下方法1)初始化一个空字符串S;2)遍历表中的每个表结构结构数组T,并将各个表结构所收录的信息添加到S中;3)删除S中的Html标签,删除Html标签后的S1就是要提取的新闻网页的文本内容。实验结果表明,新闻网页抓取的准确率非常高。仍然可以达到98%以上的准确率,时间效率高。本发明描述的方法不限于具体实施例中描述的实施例,本领域技术人员可以根据本发明的技术方案获得其他实施例。,也属于本发明的技术创新范围。声称1.是一种新闻网页文本信息提取方法,包括以下步骤(1)对网页进行规范化预处理,使其符合Html语言标准,然后根据<table>和<div > Html语言中的标签,解析所有新闻网页的Html数据得到Html树;(2)比较同一模板生成的Html树的各级数据,使坐标相同,收录相同有效信息的table节点或div节点也被淘汰;(3) 也属于本发明的技术创新范围。声称1.是一种新闻网页文本信息提取方法,包括以下步骤(1)对网页进行规范化预处理,使其符合Html语言标准,然后根据<table>和<div > Html语言中的标签,解析所有新闻网页的Html数据得到Html树;(2)比较同一模板生成的Html树的各级数据,使坐标相同,收录相同有效信息的table节点或div节点也被淘汰;(3) 也属于本发明的技术创新范围。声称1.是一种新闻网页文本信息提取方法,包括以下步骤(1)对网页进行规范化预处理,使其符合Html语言标准,然后根据<table>和<div > Html语言中的标签,解析所有新闻网页的Html数据得到Html树;(2)比较同一模板生成的Html树的各级数据,使坐标相同,收录相同有效信息的table节点或div节点也被淘汰;(3) 使其符合Html语言标准,然后根据Html语言中的<table>和<div>标签,解析所有新闻网页的Html数据,得到Html树;(2)比较同一模板生成的Html树的各级数据,使坐标相同,收录相同有效信息的table节点或div节点也被淘汰;(3) 使其符合Html语言标准,然后根据Html语言中的<table>和<div>标签,解析所有新闻网页的Html数据,得到Html树;(2)比较同一模板生成的Html树的各级数据,使坐标相同,收录相同有效信息的table节点或div节点也被淘汰;(3)
v的第i个分量ni的含义是Html树中第i层的第ni个节点;2) 初始化一个栈,将栈底到栈顶的元素设置为a, a[1], a[2], a[3],...,和 0=a=a[1]=a[2]=a[3]=...; 并设置一个栈元素指针p,指向栈顶元素,由于栈最初没有元素,可以假设p指向一个虚元素a[-1];3)扫描要处理的Html文档,如果遇到<table>标签,则遇到一个新的table Node,将栈元素指针p上移一格,然后将指向的元素的值加1由栈元素指针p指向,并将栈元素指针p指向的栈元素设置为a[k],那么表节点 A 的坐标就是栈底元素 a 到 a[k] 形成的序列,即向量 (a, a[1], a[2], ... , a[k]),从中得到表节点A的坐标;4)如果遇到一个</table>节点,即当一个表节点结束时,栈元素指针p下移一个空格,此时就构造了一个新的表结构,坐标当前表节点的信息和信息存储在这个表结构中,然后把这个结构添加到数组T的末尾;5) 如果遇到其他字符,将栈元素指针p指向的栈元素设置为a[k],
6)如果没有扫描到Html文档的末尾,继续扫描,转到步骤3),否则结束,返回存储Html树级信息的数组T。3.如权利要求1、2所述的一种新闻网页文本信息提取方法,其特征在于,在步骤(2)中,对数据进行过滤,当不需要的数据信息删除,使用下面的方法假设C和D是同一模板生成的发布时间相邻的两个新闻网页,1)经过步骤(1),网页C的结构体数组为T1;@>经过步骤(1),网页D的结构数组为T2;3)遍历T1中的各个表结构,并将T1中的每个结构设置为S1,并进行如下操作 a) 遍历T2,找到T2中与S1坐标值相同的结构,设置为S2;b) 判断S1中收录的信息是否与S2中收录的信息相同,除了链接文本,如果相同则在T1 S1中删除,在T2中删除S2。4.一种如权利要求1、2所述的新闻网页文本信息提取方法,其特征在于,在步骤(3)中,Html树中各层表节点中的数据为提炼识别,并区分标题信息和内容信息,使用如下方法1)表节点中的结构,判断结构信息中是否有标题元素;2) 如果结构有多个标题元素,则将第一个作为该结构的标题。如果没有title元素,则表示此表结构的标题为空。
初始化一个空字符串 S;2) 遍历表结构数组T中的每个表结构,将每个表结构收录的信息添加到S中;3)删除S中的Html标记,删除Html标记后的S1为要提取的新闻网页的文本内容。全文摘要本发明涉及一种新闻文本信息的提取方法网页,属于网页信息的分析处理
技术领域:
. 在现有技术中,通常使用包装器来提取网页中感兴趣的数据,包装器根据一定的信息模式识别知识,按照固定的规则从特定信息源中提取相关内容,并以一种形式表达出来。具体形式。获取包装器所需的信息模式识别知识是一项耗时耗力的任务,对智能的要求很高。本发明的方法利用栈数据结构将网页数据的层次结构信息转化为向量表达式,构造并解析Html树,然后对Html树的每一层数据进行比较,进行数据过滤、细化和识别, 和数据重组以提取所需的数据信息。本发明方法适用于对固定站点模板生成的新闻网页中的新闻信息进行长期抓取,速度快、准确率高。文号G06F17/30GK1786965SQ20051013237 公布日期2006年6月14日申请日期2005年12月21日优先权日期2005年12月21日发明人舒文兵、吴玉倩、肖建国申请人:,,, 北京大学