专利名称:基于多页面比较的网页元数据自动抽取方法和系统的制作方法
技术领域:
本发明属于互联网信息处理技术领域,尤其涉及网页元数据的自动抽取方法及系 统。
背景技术:
随着互联网技术的飞速发展,互联网上的信息也以指数级增长,目前以网页为单 位基于关键字匹配的信息检索方式已经很难满足人们日益增长的对信息的渴求。例如有 人想在网上查找价格在10到20万之间的汽车的相关信息,传统的搜索引擎就很难完成这 种搜索。要满足这种信息检索的需求就必须将网页中的元数据提起出来,并进行存储和索 弓丨。然而从网页中提取元数据并非易事,因为互联网的页面都是用松散的HTML来组织的, 而HTML语法验证不严格,结构松散,语义和表现格式混合在一起,这给网页数据抽取带来 了很大的困难。目前已有一些方法致力于解决网页数据抽取的问题,但它们都有各自的不足之 处。人工模板的方法是通过由专业人员分析网页,利用XPATH或正则表达式来表示网页中 元数据各个字段的位置,这种方法对每个网站都要写不同的模板,而且一旦目标网站的页 面布局发生变化就必须修改模板,所以对模板维护的成本极高。而本发明使用时只需预先 做一些配置,然后可以由程序自动发现模板,即使目标网站的页面布局发生变化,也无需修 改程序或配置,即可推导新的模板。基于视觉的网页数据抽取方法比人工模板的方法具 有更高的自动性,理论上准确性应该很高,但是实际应用中因为需要解析Javascript和 CSS来得到网页中各个元素的位置和尺寸的信息,所以它对运行环境的资源要求较高,较高 的运行要求导致这种方法用于大规模分布式快速抓取的价值不高。而本发明不需要处理 Javascript和CSS,所以在资源开销和性能上更具有优势。
发明内容
本发明的目的是提供一种通过多页面的比较来解决网页元数据自动抽取问题的 方法及系统。它建立在一个假设“动态页面是由同一个模板填入不同的数据生成的”的基 础之上,通过比较多个相似的页面,进行规约推导,从而得到生成这组页面的模板,再用得 到的模板从网页中提取出元数据。本发明的技术方案基于多页面比较的网页元数据自动抽取方法及系统,包括以下 组成部分一、网页采集器网页采集器负责从若干个预先设定好的网站抓取网页并存储下来,为后面的分析 模块提供输入。这里我们采用了 Apache下面的一个开源项目Nutch,并在它的基础上进行了扩 展。Nutch是一个开源Java实现的搜索引擎。它提供的Web爬虫可以从一个网站的入口地 址出发,采用广度优先的策略,逐级向后遍历一定深度的页面。而且Nutch还支持分布式,它可以在多台机器上协同工作。Nutch可以很好的满足传统搜索引擎的需求,但是对于元数据抽取来说,这样漫无 目的地遍历页面效率比较低,其中很多页面对于具体应用来说都是无用页面。因而为了使 网页抓取的目的性更强,提高Nutch爬虫的效率,我们对Nutch的源代码进行了扩展,把所 有页面分为四类,并遵循一定的规则去遍历页面。 (一)列表页面各个网站列出数据结果的页面,通常由一个列表和一组翻页链 接构成,这是网页采集器起始的地址。例如搜房网的房源列表页面http://eSf. soufim. com/newsecond/sale_info/SearchList_New2. aspx,这是一个典型的列表页面,通过翻页 列出更多的房源数据结果,从这个地址出发能有效地避开其他无关的新闻或广告等页面。 网页收集器从这个页面出发,采用广度优先的策略,逐步向下深入抓取。同时我们还加入了 智能链接分析技术,能够找到翻页的链接,从而可以遍历所有页,采集到更多的网页。(二)数据页面列出详细数据的页面。例如上面给出的搜房网的房源结果页面 列出了 20套房子,每套房子的标题上都有一个链接,点击这个链接就可以看到房源的详细 信息,这些页面就是数据页面,数据页面把一套房子的属性全部列出来了,因而,分析这个 页面可以将房源的元数据提取出来。网页元数据分析模块主要从这类页面中提取元数据。 这里数据页面的链接由用户用正则表达式事先指定好。(三)导航页面从列表页面到数据页面有时是直接的,有时会经过若干个页面才 能到达,这些从列表页面到数据页面之间的中间页面就是导航页面。导航页面里面往往没 有元数据,只是过渡到数据页面的桥梁,所以无需对其进行分析,只要处理它里面的链接就 够了。这里导航页面的链接由用户用正则表达式事先配置好。(四)干扰页面一个网站里除列表页面、数据页面和导航页面之外的其他页面都 是干扰页面,这些页面对于提取元数据没有任何帮助,所以不需要下载分析。二、网页分类器逐个输入网页采集器抓取的网页,将从同一个列表页面链接到的数据页面归为一 类,批量输入给网页元数据分析模块,因为从同一个列表页面链接到的数据页面往往是由 同一个模板生成的。网页分类器是基于Hadoop开发的。Hadoop是Google MapReduce的一个开源 Java实现。MapReduce是一种简化的分布式编程模式,让程序自动分布到一个由普通机器 组成的超大集群上并发执行。就如同java程序员可以不考虑内存泄露一样,MapReduce的 rim-time系统会解决输入数据的分布细节,跨越机器集群的程序执行调度,处理机器的失 效,并且管理机器之间的通讯请求。这样的模式允许程序员可以不需要有什么并发处理或 者分布式系统的经验,就可以处理超大的分布式系统得资源。网页分类器利用Hadoop可以很好的在多台机器上处理大量的网页。三、网页元数据分析模块输入一组页面,选取其中若干个页面进行规约推导,得到这组页面的模板,再利用 该模板对这组页面进行数据抽取,得到元数据,并存储下来。参考说明书附2,网页元数据分析模块的主要步骤如下
(一)读入 min_infer 个页面 miruinfer是用户预先配置好的一个参数,表示每次推导最少使用多少个页面。min_infer会影响模板推导的质量,因为当页面太少时,可能把一部分元数据当成模板中不 变的部分,从而忽略掉(在本发明中,把模板中变化部分当成元数据候选)。( 二)推导模板 这一部分将具体介绍模板推导的基本原理和算法。规约推导出的模板采用 union-free regularexpression 来表不。union-free regular expression 白勺定义如下给定特殊符号#POTATA和#SUBTREE和一个符号字母表Σ包含#POTATA禾口 #SUBTREE,则 union-freeregular expression 是由字符集Σ U {#PCDATA,#SUBTREE,·,?, +,(,)}构成的字符串,且满足以下条件1.空串 ε,Σ U {#PCDATA,#SUBTREE}中的任意元素是 union-free regular expression ;2.如果 a 禾口 b 是 union-free regular expression,那么 a · b, (a)+, (a) ?也是 union-free regular expression。上面是union-free regular expression的语法定义,其中,这些符号的语义分别 是1. #PCDATA表示一个可变的文本串;2. SUBTREE表示一个HTML文档中的一个可变的子树,这个子树由其根节点唯一 标识,而其内部的具体结构是可变的;3. ·是连接运算符,它将多个token按前后顺序组合在一起;4. ?是可选运算符,表示某个token或一组token可能出现,也可能不出现;5. +是迭代运算符,表示某个token或一组token可能出现多次。这里采用了与之等价的XML格式来存储推导出的模板。一个模板的XML文档的根 节‘点为 expression 节;^。 expression 节;点下面可以包含 variant、subtree、and、hook 禾口 plus节点中的任意一个。1. variant 节点与 #PCDATA 等价;2. subtree节点与#SUBTREE等价,它这个子树的根节点唯一标识,并且保存了这 个子树的根节点的标签名,属性和在DOM树中的深度;3. and节点与·运算符等价,它可以包含variant、subtree、and、hook和plus节 点中的任意多个;4. hook节点与?运算符等价,它可以包含variant、subtree、and、hook和plus节 点中的任意一个;5. plus节点与+运算符等价,它可以包含variant、subtree、and、hook和plus节 点中的任意一个。union-free regular expression对应的XML表示方式在内存里以树形结构来表 示,存储到数据库中时用XML文本串来表示。模板推导的步骤如下1.对网页进行预处理,将HTML文档转换为标准的XML文档,并且根据用户的设定 清除一些标签或节点,或合并一些节点。这些标签或节点往往是可有可无的,仅仅用于排 版,没有任何特殊的语义,如font标签,font标签可以在做页面分析时忽略,被font标签 拆分开的多个文本节点也可以合并到一起。类似这样标签是可配置的,用户可以把它们写入一个配置文件中。
2.将预处理后HTML文档分解为一组token。这里的token包括3种,开始标签, 结束标签和文本,每个token都保存了它的深度信息,即该token在DOM树中的深度。3.比较 2 个 HTML 文档的 token 串,推导出一个用 union-free regular expression表示的模板。4.判断是否还有HTML文档需要参与推导,若无,则结束推导,并且输出目前推导 出的模板;若有,则到第5步。5.用目前推导出的模板与一个新的HTML文档的token串进行比较,对模板进行求 精,推导出一个新的模板。然后再执行第4步。以上第3步中比较2个HTML文档的token串,推导模板的具体步骤描述如下1.分别从2个HTML文档的token流中逐个读出token进行比较,直到两个token 串都到达末尾是停止,输出结果模板。a)如果两个token都是文本,且内容完全一样,则将这个token加入到结果模板 中,继续执行第1步;b)如果两个token都是标签,且是相同的标签(标签名、属性和在DOM树中的深度 相同),则将这个token加入到结果模板中,继续执行第1步;c)其他情况下,即两个token不匹配时,则执行第2步解决冲突。2.分别采用以下方案来解决冲突。a)如果两个token都是文本,但内容不一样,则引A#PCDATA符号解决冲突,将 #PCDATA加入到结果模板中,继续执行第(1)步。b)如果两个token都是标签,但不是相同的标签,假设分别为tagl、tag2,则依次 尝试下列方式i.如果tagl是开始标签,匹配tagl块(即tagl与其对应结束标签之间的token 串)和tagl的上一个token块,如果匹配成功,则继续再往上匹配一个token块,直到失 败为止。如果匹配的次数大于0,则将tagl块结合plus操作加入结果模板中,并将目前发 生匹配冲突的位置、现在的结果模板和已尝试过的解决冲突的方式存入栈中,继续执行第1
止
少οii.如果tag2是开始标签,匹配tag2块(即tag2与其对应结束标签之间的 token串)和tag2的上一个token块,如果匹配成功,则继续再往上匹配一个token块,直 到失败为止。如果匹配的次数大于0,则将tag2块结合plus操作加入结果模板中,并将目 前发生匹配冲突的位置、现在的结果模板和已尝试过的解决冲突的方式存入栈中,继续执 行第1步。iii.如果tagl是开始标签,将tagl块(即tagl与其对应结束标签之间的token 串)结合hook操作加入结果模板中,并将目前发生匹配冲突的位置、现在的结果模板和已 尝试过的解决冲突的方式存入栈中,继续执行第1步。iv.如果tag2是开始标签,将tag2块(即tag2与其对应结束标签之间的token 串)结合hook操作加入结果模板中,并将目前发生匹配冲突的位置、现在的结果模板和已 尝试过的解决冲突的方式存入栈中,继续执行第1步。v.上一个匹配的标签是开始标签laSt_tag,且深度比这两个失配的标签小1,则将#SUBTREE加入到结果模板中, SUBTREE的根节点为laSt_tag,并将目前发生匹配冲突的 位置、现在的结果模板和已尝试过的解决冲突的方式存入栈中,继续执行第1步vi.如果以上尝试均失败,但是栈不为空,则将栈顶出栈,将栈顶所保存的发生匹 配冲突的位置和结果模板替换现有的发生匹配冲突的位置和结果模板,并尝试未尝试的解 决冲突的方式。如果栈为空,则整个推导过程失败。附3(a)中有两个具体的HTML文档,比较它们得到模板的具体过程如下1.分别从2个HTML文档的token流中逐个读出token进行比较,在token 04处 不匹配,符合上面的原则(a)的要求,因此引入#PCDATA ;2.继续比较,在token 08处又出现不匹配,不符合上面的原则(a)的要求,因此尝 试原则(b)中几种解决冲突的方法,尝试(I)、(II)失败,采用(III)引入hook操作解决 冲突;3.继续比较,经过几次通过引入#PCDATA解决冲突之后,在文档1的token 39和 文档2的t0ken37处又出现不匹配,不符合上面的原则(a)的要求,因此尝试原则(b)中几 种解决冲突的方法,尝试(I)方案,将token块不断向上匹配,从而得到迭代的token块,弓丨 入plus操作解决冲突;4.继续比较,直到两个文档的末尾,推导成功,得到附3(b)中的模板。得到模板后还需要通过元数据标识器将页面模板中变化的部分,即元数据的候 选,与元数据中的相应字段对应起来。元数据标识器需要用户事先提供一些关于元数据各 个字段的信息,包括1.元数据各个字段可能用的标签,如书的元数据字段price,在网页中可能用到 的标签有“价格”、“售价”和“折扣价”等等;2.用正则表达式表示的元数据各个字段必然会满足的模式;3.元数据各个字段的长度的最大值和最小值。元数据标识器采用了以下启发式原则来识别模板中的元数据字段1.页面模板中变化的部分是元数据的候选;2.对于页面模板中每个变化的部分,如果有前缀,且这个前缀里至少包含两个汉 字,则这个前缀是元数据的标签候选,它会提供一些线索,告诉我们这个变化的部分是否是 元数据的某个字段,以及是元数据的哪个字段;3.页面模板中变化的部分之前的2-3个不变的部分中,如果其至少包含两个汉 字,则是元数据的标签候选;4.如果某个元数据的候选是元数据的某个字段,则它的标签候选应该出现在用户 提供的该元数据字段可能用的标签列表中;5.如果某个元数据的候选是元数据的某个字段,则它的值应该满足用户描述的该 元数据字段的正则表达式;6.如果某个元数据的候选是元数据的某个字段,则它必须满足用户描述的该元数 据字段的长度限制。(三)评估模板用户需要预先配置好需要抽取的元数据的定义信息,其中包括关于哪些元数据字段是必须的,总共至少需要抽取到多少个元数据字段的信息。模板评估模块利用这些信息对推导得到的模板进行评估,如果模板达到了这个目标,则进行第IV步;否则,再输入一个 页面进行第II步的推导,直到输入的页面数量超过了 maxjnfer(用户预先设定的最大的 推导页面数量),此时记录下错误,等待人工解决。出现页面数量超过maxjnfer却没有得 到合适的模板很可能是因为配置信息对目标页面不适用,我们实践中遇到最多的情况是1.如抽取房源信息时,价格是必须的元数据字段,但是目标页面是一组新闻页面, 没有价格信息,经过推导得到的模板里也没有必须的价格元数据。遇到这种情况需要修改 数据页面的正则表达式,使之更严格,从而过滤掉新闻页面;2.如抽取房源信息时,价格是必须的元数据字段,目标页面中用于标识价格的标 签是“短租价”,而配置信息中没有提供这个标签,因而导致元数据标识器无法识别模板中 的该项数据,从而经过推导得到的模板里缺少了必须的价格元数据。遇到这种情况需要调 整设置,把“短租价”加入到价格标签候选中;3.如抽取房源信息时,把建筑年代设置为了必须的元数据字段,但是目标页面中 确实没有提供对建筑年代的描述。遇到这种情况需要调整设置,把建筑年代设为可选的元 数据字段。(四)用模板抽取元数据推导得到的模板用union-free regular expression表示,在内存里以树形结构 来来存储。用模板抽取元数据的过程就是对模板的union-free regular expression树形 结构(简称URE-tree)进行深度优先遍历,并将各节点与HTML页面的token进行匹配的过 程。其算法描述如下输入:URE-tree, token-stream输出是否匹配变量current-token指向token-stream当前位置的指针过程从左向右依次读取URE-tree的子节点1.如果该节点是叶节点,则将之与current-token比较a)如果该节点是标签,且current-token也是标签,则继续遍历URE-tree的下一 个子节点,且current-token向后移一个位置;b)如果该节点是#PCDATA,且current-token也是文本,则将该文本存入到抽取结 果中,并继续遍历URE-tree的下一个子节点,且current-token向后移一个位置;c)如果该节点是#SUBTREE,且current-token是标签并与该#SUBTREE节点保存 的该可变子树的根节点的标签名、属性和DOM树深度一致,则将该子树的所有文本节点合 并、存入到抽取结果中,并将current-token向后移动直到下一个与current-token深度相 同的token ;d)其他情况表示URE-tree和token流不匹配,则直接返回假,并退出算法。2.如果该节点是and节点,则对该子树调用本算法,如果返回为真,则继续遍历 URE-tree的下一个子节点;否则,直接返回假,并退出算法。3.如果该节点是hook节点,则执行以下操作a)将 current-token 保存到 token-position 中;b)对该子树调用本算法,如果返回为真,则继续遍历URE-tree的下一个子节点;否则,将token-position 恢复到current-token 中,再继续遍历URE-tree 的下一个子节点ο4.如果该节点是plus节点,则执行以下操作a)将 current-token 保存到 token-position 中;b)对该子树调用本算法;c)如果第b步返回为真,则继续执行第a步;否则将token-position恢复到 current-token中,再继续遍历URE-tree的下一个子节点。如果URE-tree的子节点全部遍历完毕,则返回真。四、网页元数据存储存储并索引网页元数据分析模块得到的结果。本发明采用数据库加全文索引的方 式来存储网页元数据。抽取到的原始的网页元数据保存在数据库中,但是考虑到前台全文 检索的性能要求,我们利用Compass全文索引引擎定时地将数据库中的网页元数据镜像到 全文索引中,然后前台的用户检索全部由Compass来处理。Compass是一个建立在Lucene之上的开源项目,旨在将搜索引擎以最简单的方式 整合到Java应用中。Lucene提供了一个高性能的全文检索引擎的Java实现,而Compass 则使得Lucene使用起来更简单,它可以将P0J0、XML和数据库记录方便地写入到全文索引 中去。五、元数据搜索引擎用于检索和显示分析后的元数据。该模块提供了 UI给用户输入对各个元数据字 段的限制条件,然后利用用户提供的查询条件去检索Compass建立的全文索引,并将检索 的结果列出来。本发明的优点和积极效果本发明的优点是对于处理半结构化网页,具有较高的自动性,并且有较快的处理 速度和较高的准确度,用户使用本发明时,只需要预先配置一些通用参数即可工作,可以很 好的应对目标网站上网页布局的变化,减少了人工维护模板的重复劳动。本发明的方法能 够很好的处理半结构化网页,具有较好的实用价值。
图1给出了本发明组成结构的示意图。图2给出了本发明的网页元数据分析模块的流程图。图3给出了比较两个HTML文档得到模板的具体过程的示意图。图4给出了使用本发明对搜房网进行元数据抽取得到的效果示意图。
具体实施例方式以下结合一个对房源信息进行整合的例子,详细描述本发明的具体实施方式
。本具体实施方式
描述的是对互联网上的房产网站的房源页面元数据的抽取方法。 房源信息的整合工作,目标是为在互联网上的找房者提供一个房源信息的集成平台,他们 只需通过在一个网站上搜索就可以找到互联网上所有网站的房源。作为其重要环节的元数 据抽取步骤,需要对半结构化网页能够达到较好的抽取精确性,并具有处理结构松散文档的能力。本具体实施方式
中,对元数据的抽取包括以下几个步骤1.配置网页收集器 这里要定义需要收集网页的网站,每个网站需要定义以下信息1)网站名称各个网站的名字,如搜房网,焦点房地产等等;2)列表连接列表若干个列表链接,这是网页收集器起始的地址;3)数据页面的正则表达式若干个表示链接的正则表达式,符合这些正则表达式 中的某一个则是数据页面的链接,数据页面列出了详细数据,它会被输入到网页元数据分 析模块中以提取元数据;4)导航页面的正则表达式若干个表示链接的正则表达式,符合这些正则表达式 中的某一个则是导航页面的链接,该类页面会被下载下来,并且会分析其中的链接,但是不 会用于元数据的提取;5)搜索层数网页收集器遍历网页的最大深度。以搜房网为例,来说明如何定义一个网站1)网站名称搜房网;2)列表链接列表页面:http://esf. sh. soufun. com/newsecond/sale info/ searchlist new2. aspx ;3)数据页面的正则表达式~http://esf. [". ]+. soufun. com/chushou/2_\ d+_\d+. htm$ ;4)导航页面的正则表达式~http://esf. sh. soufun. com/00010_0_0_0_0_0_0_\ d+_0_0_0_0/,该类链接主要用于对结果列表进行翻页;5)搜索层数4。配置好了网页采集器之后,运行本发明的主程序,网页采集器就会从http://eSf. sh. soufun. com/newsecond/sale_info/searchlist_new2. aspx 页面出发以广度优先策略 开始逐层收集网页,因为配置了数据页面和导航页面的正则表达式,其他无关的页面便会 被过滤掉,网页收集器只会下载房源详细信息页面链接和翻页的链接。2.配置网页元数据分析模块这里需要配置网页预处理的参数、运行时参数和元数据标识器的参数。网页预处 理的参数有DfreetextTags 这一类标签会被网页预处理程序忽略掉,而只保留其文本节点 的内容,如果有相邻的若干个这一类标签,它们的文本节点还会被合并成一个文本节点,这 样做可以减小网页的复杂度;2) skipTags 这类标签会被忽略掉,但是它们的子节点仍然会被处理;3) skipTrees 这类标签及其子节点都被完全忽略掉;4) skipAttributes 表示哪些属性在预处理时会被忽略掉,即这些属性不会保 存下来,在后面的标签比较的过程中也不会将这些属性考虑在内;5)attributeValues 表示哪些属性在预处理时会被保留下来,即这些属性会被 保存下来,在后面的标签比较的过程中也会用到这些属性,两个标签相等必须满足对应属 性页相同。
权利要求
基于多页面比较的网页元数据自动抽取方法及系统,包括以下部分(1)网页采集器从若干个预先设定好的网站抓取网页并存储下来,为后面的分析模块提供输入;(2)网页分类器逐个输入网页收集器抓取的网页,将从同一个列表页面链接出去的页面作为一类页面,批量输入给网页元数据分析模块;(3)网页元数据分析模块输入一组页面,选取其中若干个页面进行规约推导,得到这组页面的模板,再利用该模板对这组页面进行数据抽取,得到元数据,并存储下来;(4)网页元数据存储存储并索引网页元数据分析模块得到的结果;(5)元数据搜索引擎用于检索和显示分析后的元数据。
2.如权利要求1所述的元数据自动抽取方法及系统,所述部分(1)中,将所有网页分为 四类区别对待,使网页抓取的目的性更强,从而提高了网页抓取的效率。(1)列表页面各个网站列出数据结果的页面。这是网页收集器起始的地址,网页收集 器从这个页面出发,采用广度优先的策略,逐步向下深入抓取;(2)数据页面列出详细数据的页面。网页元数据分析模块主要从这类页面中提取元 数据;(3)导航页面从列表页面到数据页面有时是直接的,有时会经过若干个页面才能到 达,这些从列表页面到数据页面之间的中间页面就是导航页面;(4)干扰页面一个网站里除列表页面、数据页面和导航页面之外的其他页面,这些页 面对于提取元数据没有任何帮助,所以不需要下载下来。
3.如权利要求1所述的元数据自动抽取方法及系统,所述部分(3)基于假设“相似的一 组动态网页一般是由同一个模板填入不同的数据生成的”,因而,可以通过比较一组相似的 网页,区分其不变的部分,和变化的部分,发现其变化规律,从而得到生成这组页面的模板。
4.如权利要求1所述的元数据自动抽取方法及系统,所述部分(3)中规约推导出的 模板采用了 union-free regular expression来表示,并采用了与之等价的XML格式来存 储。这里的union-free regular expression建立在一个包括两个特殊符号#PCDATA和 SUBTREE的字母表上,并包括3种操作符,连接,可选和迭代。#PCDATA表示一个可变的文 本串;#SUBTREE表示一个HTML文档中的一个可变的子树,这个子树由其根节点唯一标识, 而其内部的具体结构是可变的。连接是将多个token按前后顺序组合在一起;可选表示某 个token或一组token可能出现,也可能不出现;迭代表示某个token或一组token可能出 现多次。
5.如权利要求1所述的元数据自动抽取方法及系统,所述部分(3)又包括以下部分(1)模板推导器比较一组网页,进行规约推导,得到这组页面的模板;(2)元数据标识器页面模板中变化的部分是元数据的候选,其中可能包括一些干扰 信息,元数据标识器可以从元数据的候选中将元数据挑出来,并将页面模板中各个变化的 部分与元数据的某个字段对应起来;(3)模板评估器将模板中识别到的元数据的字段与用户预设的目标(哪些元数据的 字段是必须的,至少需要抽取到多少个元数据字段)进行比较,如果达到目标则接受该模 板,否则,进一步进行推导;(4)模板执行器执行推导出来的页面模板,抽取出元数据;(5)抽取结果处理模块该模块是一个接口,由用户自己实现,对抽取出的元数据进行 一些处理,如对数据的单位进行换算,或把自然语言描述的属性映射为某种编码。
6.如权利要求5所述的元数据分析模块,所述部分(1)包括以下步骤(1)对网页进行预处理,将HTML文档转换为标准的XML文档,并且根据用户的设定清除 一些标签或节点,或合并一些节点。这些标签或节点往往是可有可无的,仅仅用于排版,没 有任何特殊的语义,如font标签,font标签可以在做页面分析时忽略,被font标签拆分开 的多个文本节点也可以合并到一起;(2)将预处理后HTML文档分解为一组token。这里的token包括3种,开始标签,结束 标签和文本;(3)比较2 个 HTML 文档的 token 串,推导出一个用 union-free regular expression 表示的模板;(4)判断是否还有HTML文档需要参与推导,若无,则结束推导输出目前推导出的模板; 若有,则到第(5)步;(5)用目前推导出的模板与一个新的HTML文档的token串进行比较,对模板进行求精, 推导出一个新的模板。然后再执行第(4)步;
7.如权利要求5所述的元数据分析模块,所述部分(2)需要用户事先提供一些关于元 数据各个字段的信息,包括(1)元数据各个字段可能用的标签,如书的元数据字段price,在网页中可能用到的标 签有“价格”、“售价”和“折扣价”等等;(2)用正则表达式表示的元数据各个字段必然会满足的模式;(3)元数据各个字段的长度的最大值和最小值。
8.如权利要求5所述的元数据分析模块,所述部分(2)采用了以下启发式原则(1)页面模板中变化的部分是元数据的候选;(2)对于页面模板中每个变化的部分,如果有前缀,且这个前缀里至少包含两个汉字, 则这个前缀是元数据的标签候选,它会提供一些线索,告诉我们这个变化的部分是否是元 数据的某个字段,以及是元数据的哪个字段;(3)页面模板中变化的部分之前的2-3个不变的部分中,如果其至少包含两个汉字,则 是元数据的标签候选;(4)如果某个元数据的候选是元数据的某个字段,则它的标签候选应该出现在用户提 供的该元数据字段可能用的标签列表中;(5)如果某个元数据的候选是元数据的某个字段,则它的值应该满足用户描述的该元 数据字段的正则表达式;(6)如果某个元数据的候选是元数据的某个字段,则它必须满足用户描述的该元数据 字段的长度限制。
9.如权利要求1所述的元数据自动抽取方法及系统,所述部分(2)将从同一个列表页 面链接到的数据页面归为一类,因为从同一个列表页面链接到的数据页面往往满足权利要 求3中所述的假设。
全文摘要
本发明提供了一种基于多页面比较的网页元数据自动抽取方法和系统,属于互联网信息处理领域。互联网的页面都是用松散的HTML来组织的,而HTML语法验证不严格,语义和表现格式混合在一起,给网页数据抽取带来了很大的困难。本发明则能很好的解决这个问题。本发明基于一个假设“动态页面是由同一个模板填入不同的数据生成的”,因而可以通过比较多个相似的页面,进行规约推导,从而得到生成这组页面的模板。本发明包括以下部分(1)网页采集器从预设的网站抓取网页;(2)网页分类器将相似的页面归为一组;(3)网页元数据分析模块推导模板、抽取元数据;(4)网页元数据存储存储和索引元数据;(5)元数据搜索引擎检索和显示元数据。
文档编号G06F17/30GK101957816SQ20091005470
公开日2011年1月26日 申请日期2009年7月13日 优先权日2009年7月13日
发明者李沛剡, 甘雨 申请人:上海谐宇网络科技有限公司