著录项信息
专利名称 | 基于可扩展标记语言查询的网页数据抽取方法 |
申请号 | CN201010545520.2 | 申请日期 | 2010-11-16 |
法律状态 | 权利终止 | 申报国家 | 中国 |
公开/公告日 | 2011-03-09 | 公开/公告号 | CN101984434A |
优先权 | 暂无 | 优先权号 | 暂无 |
主分类号 | G06F17/30 | IPC分类号 | G;0;6;F;1;7;/;3;0查看分类表>
|
申请人 | 东北大学 | 申请人地址 | 辽宁省沈阳市和平区文化路3号巷11号
变更
专利地址、主体等相关变化,请及时变更,防止失效 |
权利人 | 东北大学 | 当前权利人 | 东北大学 |
发明人 | 聂铁铮;于戈;王波涛;岳德君 |
代理机构 | 沈阳东大专利代理有限公司 | 代理人 | 梁焱 |
摘要
一种基于可扩展语言查询的网页数据抽取方法,属于计算机数据库技术领域,包括以下:步骤确定Web页面中抽取数据内容时所对应的模式结构;定位Web页面中数据区域、数据单元和属性文本;对属性文本进行语义标注;生成数据单元节点路径:计算抽取属性值的路径表达式;生成数据抽取的XML查询语句;利用XML查询语句抽取数据,本发明能够生成精确的XML查询语句,保证XML查询语句的正确性,本发明具有较高的通用性,能够与已有无缝融合,本发明能够适应更加复杂的查询结果输出。
1.一种基于可扩展标记语言查询的网页数据抽取方法,其特征在于:包括以下步骤:
步骤1:确定Web页面中抽取数据内容时所对应的模式结构;
步骤2:定位Web页面中数据区域、数据单元和属性文本;
步骤3:对步骤2中的属性文本进行语义标注;
步骤4:生成数据单元节点路径;
步骤5:计算抽取属性值的路径表达式;
步骤6:生成数据抽取的XML查询语句;
步骤7:利用XML查询语句抽取数据;
其中,步骤1所述的模式结构包括:关系形式的表结构和层次结构两种,其中,表结构的数据模式S由数据实体名E和一组属性集合A={A1,…,An}所构成,其中Ai表示属性集合中的一个属性,由属性名称和属性的数据类型构成,1<=i<=n,n表示属性的数量,Ai表示为,其中N表示属性名称,Type表示属性数据类型,所述数据类型Type包括整数类型integer、浮点类型float和字符串类型string;所述的层次结构是指由基本类型组成的复杂数据结构,其对应的数据模式表示为Si′,包含属性{Ai′1,...,Ai′x},x为模式Si′中属性的数量;
步骤2所述数据区域Da,是指在Web页面中包含所有数据单元的最小边界所包含的区域,定位方法为:在Web页面对应的文档对象模型DOM结构中对应一个包含所有数据单元的最小子树;
所述数据单元Du,表示Web数据抽取所要获得的一个模式结构对应的数据实体,由模式中的属性描述,在页面中以一定的规律重复出现;定位方法为:在Web页面的文档对象模型DOM树中,找出页面中数据实体各属性内容所在的节点,包含这些节点的最小子树就是数据单元;
所述属性文本At,表示在Web页面中包含数据模式属性的属性值的文本内容,属性值在Web页面的文档对象模型DOM树中元素节点的文本节点中,定位方法为:在Web页面对应的文档对象模型DOM树结构中找出包含该属性值文本的节点;
步骤4所述生成数据单元节点路径包括以下步骤:
步骤4-1:将步骤2得到的数据单元集合表示为:U={U1,U2,…,Uy},其中,Ui表示一个数据单元,其中i=1,…,y;
步骤4-2:根据确定的数据单元Ui,确定其在页面XML文档中所对应得元素节点,该节点表示为Ni,再根据XML文档的结构为元素节点Ni生成从根节点到该节点的路径值,表示为Pi;
步骤4-3:计算数据单元的路径表达式,方法为:
取一个数据单元节点的路径,在路径值Pi中,使用位置谓词定位路径表达式中的每一个步,即由文档根节点到数据单元对应的元素节点所经过的每一个节点,取路径表达式中的每个节点标签,所有数据单元的路径具有相同的标签序列,则从根节点开始的标签序列表示为T,其中包括m个标签分别表示为(T1,T2,…,Tm),其中标签T1为根节点的标签,其余标签依次类推,每个节点的标签在其同标签兄弟节点中的位置序列表示为(pi1…,pim),其中位置pi1为根节点标签的位置,其余标签依次类推,则路径值表示为:
路径值Pi=/标签1[位置i1]/标签2[位置i2]/……/标签m[位置im],
即Pi=/T1[pi1]/T2[pi2]/....../Tm[pim]/
步骤4-4:对数据单元的路径集合,计算从根节点开始的最长公共路径LCP:
所述最长公共路径是指所有数据单元节点的路径共有的节点构成的路径,计算最长公共路径LCP的方法为:对于数据单元节点的路径,从根节点开始的第一个标签位置开始匹配,如果所有数据单元节点路径在当前标签下的位置值相同,即p1i=p2i=...=pyi,则把当前标签和位置值顺序添加到最长公共路径中,即LCP+=/Ti[pi],如果所有数据单元节点路径在当前标签下的位置值存在不同值,则停止匹配,将当前最长公共路径值作为最终的最长公共路径值;
步骤4-5:化简步骤4-4计算得到的最长公共路径LCP;
对于最长公共路径中的一个步所对应的节点,表示为ni,对应的标签为Ti,如果其兄弟节点中不存在与其标签相同,且具有相同后继路径为“/标签i+1/....../标签m”的子孙节点的非数据单元节点,则该节点的位置值在最长公共路径的表达式中可以省略;
步骤4-6:采用生成谓词的方法计算局部路径,所述的局部路径是指每个节点私有的节点构成的路径:
生成谓词的方法为:假设当前步的节点的标签为Ti,看当前步中节点集合的所有兄弟节点中,是否包含与其标签相同且具有相同后继路径为“/标签i+1/....../标签m”的子孙节点的非数据单元节点,若没有则省略谓词,若有则再查看当前节点中是否有非数据单元节点的XML属性,能够将当前节点与符合上面条件的非数据单元节点区分,如果有这样的XML属性则将该属性作为谓词表达式,若没有则进一步计算谓词中位置值的范围,把这些符合条件的非数据单元节点称为噪音节点;
所述计算谓词中位置值的范围的方法如下:
如果噪音节点只出现在数据单元节点集合之前,则对于该标签表示数据单元节点的谓词中位置的范围为:从所有数据单元节点的标签Ti所对应的节点位置中最小的位置值到最后一个具有该标签的节点;
如果噪音节点只出现在数据单元节点集合之后,则对于该标签表示数据单元节点的谓词中位置的范围为:从第一个到所有数据单元节点的标签Ti所对应的节点位置中最大的位置值;
如果数据节点被噪音节点有规律地分割,计算数据单元节点被噪音节点分割的间隔pinte,计算数据单元节点连续出现的长度pcont,并计算所有数据单元节点的标签Ti所对应的节点位置中最小的位置值和最大的位置值,表示为pmin和pmax,则符合下面位置条件的节点被认为是数据单元路径上的节点:(1)节点位置值减去pmin后,对pinte取模后的余数小于pcont值;(2)节点位置值小于最大噪音节点位置值减去pmax再加1后的值;
步骤4-7:合并最长公共路径和局部路径;
将最长公共路径和局部路径合并,得到在Web页面的XML文档中定位数据单元的路径Pu;
步骤5所述的计算抽取属性值的路径表达式包括以下步骤:
步骤5-1:生成属性节点定位的路径;
假设在样本数据中,模式属性Ai的属性值所在的节点相对于数据单元节点的路径表示为:
/标签Ai1[位置Ai1]/标签Ai2[位置Ai2]/……/标签Aik[位置Aik]
即/TAi1[pAi1]/TAi2[pAi2]/…/TAik[pAik],其中TAij表示标签Aij,pAij表示位置Aij,其中j=1,…,k,标签Aik为包含属性值节点的标签,位置Aik为该节点在其同标签兄弟节点中的位置,则可以使用步骤4-5的方法,对属性节点定位的路径进行化简;
步骤5-2:确定属性值抽取规则;
属性值抽取规则适用于以下两种情况:1)、多个属性的属性值同时包含于一个节点文本中;2)、节点文本内容中包含非属性值文本内容;
假设节点文本中非属性值文本内容为固定文本,且在同一节点文本中的不同属性的属性值之间也使用固定的文本进行分割,只需计算出节点文本中分割属性的固定字符串即可分离属性值文本或不同属性的属性值,方法为:
首先取多个样本Web页面,从中抽取包含相同属性的节点文本,如果该节点文本中全部字符均为属性值内容则直接抽取,否则提取公共子串并分割属性,从节点文本中抽取属性值的规则如下:
如果在节点文本中属性Ai的属性值之前有固定文本Text1,则首先对节点文本字符串Str取固定文本Text1之后的子字符串Str-after,再查看属性Ai的属性值之后,如果有固定文本Text2,则再对字符串Str-after取固定文本Text2之前的子字符串,表示为Str-before;
步骤6所述的生成数据抽取的XML查询语句包括以下步骤:
步骤6-1:在数据抽取结果为层次结构时,所要生成的XML查询语句结构构建方法为:
(1)语句的最外层使用固定的XML元素标签作为根节点,中间为XML查询表达式,对于XQuery语言是FLWOR表达式,即使用如下形式:<根节点标签>XML查询表达式根节点标签>;
(2)在XML查询表达式中,使用数据单元的路径表达式定位数据单元节点变量,对于XQuery语言使用FOR语句定位数据单元节点变量,同时可以使用LET语句和WHERE语句添加定位数据单元节点的谓词;
(3)在XML查询表达式中,在查询结果的输出部分,使用数据模式中的属性名或具有相同语义的文本作为XML文档中元素的标签,使用步骤5中生成的属性节点定位的路径和属性值抽取规则在数据单元节点变量下定位对应属性的属性值文本,具体形式为:<属性标签>{属性节点路径和属性值抽取规则构成的表达式}属性标签>
步骤6-2:在数据抽取结果为关系形式的表结构时,所要生成的XML查询语句结构构建方法:
(1)在XML查询表达式中,使用数据单元的路径表达式定位数据单元节点变量,对于XQuery语言使用FOR语句定位数据单元节点变量,同时使用LET语句和WHERE语句添加定位数据单元节点的谓词;
(2)在XML查询表达式中,在查询结果的输出部分,按照输出结果的需求,依次排列由属性节点路径和属性值抽取规则构成的表达式,不同属性值的表达式之间用特殊的符号进行分隔,具体形式为:{属性1的属性值抽取表达式}分隔符{属性2的属性值抽取表达式}分隔符…分隔符{属性n的属性值抽取表达式}。
基于可扩展标记语言查询的网页数据抽取方法\n技术领域\n[0001] 本发明属于计算机数据库技术领域,特别涉及一种基于可扩展标记语言查询的网页数据抽取方法。\n背景技术\n[0002] 随着Web领域的不断发展,Web中数据信息的迅速增长,当前各应用领域对Web数据的需求不断加大,虽然Web中包含了大量的结构化和半结构化数据,但这些数据主要以超文本标记化语言HTML的形式通过浏览器提供给用户浏览,难以直接用于数据挖掘和数据集成等应用之中,因此如何高效而准确地从大量Web页面中抽取结构化和半结构化数据变得越来越重要,针对Web数据典型的抽取方法主要分为三类:基于HTML标签树或文档对象模型DOM树的方法;基于页面结构的方法;基于视觉信息的方法;基于HTML标签树或文档对象模型DOM树的方法主要包括XWRAP、RoadRunner、Lixto、MDR和MDRII等;基于页面结构的方法主要工作包括NoDoSE、DEByE和SG-WRAP等;基于视觉信息的方法主要以ViDRE为主;\n[0003] 基于HTML标签树或文档对象模型DOM树对页面中数据记录抽取是一种比较普遍的方法,在抽取数据前,首先基于标签将Web页面转换为文档对象模型DOM树,然后基于DOM树中结构特征和自动或半自动的抽取规则从中抽取数据,基于页面结构的方法首先制定页面中包含数据部分的结构,再根据这一结构在页面中寻找相似部分作为抽取结果,但是,对于结构简单的页面,它可以得到很好的效果,如果页面DOM树中结构复杂且数据区内噪声节点过多,则处理效果不是很好,而且还无法支持嵌套结构的数据识别;\n[0004] 基于网页中视觉信息抽取数据的技术主要利用网页设计中用户浏览内容的位置习惯特征从相应位置抽取数据,微软亚洲研究院的ViDRE提出的一种基于可视化特征的抽取方法,该方法在某种程度上模拟人眼对页面的识别过程,最终达到识别对象信息的目的,然而,一方面,当页面没有明显的视觉特征时,基于视觉的抽取效率会严重降低,而另一方面,基于视觉的方式适用于对单个页面进行数据抽取,对于大量结构相同的数据不同的页面抽取的效率将会很低;\n[0005] 以上方法仅适用于包含简单数据结构的网页,如果网页中的数据为层次关系则抽取的结果将难以表示或产生属性缺失,因此难以处理数据结构复杂的页面内容;其次,这些方法在初始化后直接生成抽取结果数据,若其中有属性识别错误则难以及时修正;此外,这些方法操作相对十分独立,难以与现有数据库系统进行结合,因此缺乏对网页数据的统一管理。\n发明内容\n[0006] 为弥补上述方法之不足,本发明提供一种基于可扩展语言查询的网页数据抽取方法。\n[0007] 本发明的技术方案是这样实现的:基于可扩展语言查询的网页数据抽取方法,包括以下步骤:\n[0008] 步骤1:确定Web页面中抽取数据内容时所对应的模式结构;\n[0009] 模式结构包括:关系形式的表结构和层次结构2种,其中,表结构的数据模式S由数据实体名E和一组属性集合A={A1,…,An}所构成,其中Ai表示属性集合中的一个属性,由属性名称和属性的数据类型构成,1<=i<=n,n表示属性的数量,Ai表示为
,其中N表示属性名称,Type表示属性数据类型,所述数据类型Type包括整数类型integer、浮点类型float和字符串类型string;所述的层次结构是指由基本类型组成的复杂数据结构,其对应的数据模式表示为Si′,包含属性{Ai′1,...,Ai′x},x为模式Si′中属性的数量;\n[0010] 步骤2:定位Web页面中数据区域、数据单元和属性文本;\n[0011] 将HTML语言描述的Web页面源代码格式化为XML语言的文档;\n[0012] 所述数据区域Da,是指在Web页面中包含所有数据单元的最小边界所包含的区域,定位方法为:在Web页面对应的文档对象模型DOM结构中对应一个包含所有数据单元的最小子树;\n[0013] 所述数据单元Du,表示Web数据抽取所要获得的一个模式结构对应的数据实体,通常由模式中的属性描述,在页面中以一定的规律重复出现;定位方法为:在Web页面的文档对象模型DOM树中,找出页面中数据实体各属性内容所在的节点,包含这些节点的最小子树就是数据单元;\n[0014] 所述属性文本At,表示在Web页面中包含数据模式属性的属性值的文本内容,属性值通常在Web页面的文档对象模型DOM树中元素节点的文本节点中,定位方法为:在Web页面对应的文档对象模型DOM树结构中找出包含该属性值文本的节点;\n[0015] 步骤3:对步骤2中的属性文本进行语义标注;\n[0016] 方法为:对于每个数据单元中所包含的每个属性文本都指定一个或多个数据模式中所包含的属性;\n[0017] 步骤4:生成数据单元节点路径,包括以下步骤:\n[0018] 步骤4-1:将步骤2得到的数据单元集合表示为:U={U1,U2,…,Uy},其中,Ui表示一个数据单元,其中i=1,…,y;\n[0019] 步骤4-2:根据确定的数据单元Ui,确定其在页面XML文档中所对应得元素节点,该节点表示为Ni,再根据XML文档的结构为元素节点Ni生成从根节点到该节点的路径值,表示为Pi;\n[0020] 步骤4-3:计算数据单元的路径表达式,方法为:\n[0021] 取一个数据单元节点的路径,在路径值Pi中,使用位置谓词定位路径表达式中的每一个步,即由文档根节点到数据单元对应的元素节点所经过的每一个节点,取路径表达式中的每个节点标签,所有数据单元的路径具有相同的标签序列,则从根节点开始的标签序列表示为T,其中包括m个标签分别表示为(T1,T2,…,Tm),其中标签T1为根节点的标签,其余标签依次类推,每个节点的标签在其同标签兄弟节点中的位置序列表示为(pi1,…,pim),其中位置pi1为根节点标签的位置,其余标签依次类推,则路径值表示为:\n[0022] 路径值Pi=/标签1[位置i1]/标签2[位置i2]/……/标签m[位置im],[0023] 即Pi=/T1[pi1]/T2[pi2]/....../Tm[pim]/\n[0024] 步骤4-4:对数据单元的路径集合,计算从根节点开始的最长公共路径LCP:\n[0025] 所述最长公共路径是指所有数据单元节点的路径共有的节点构成的路径,计算最长公共路径LCP的方法为:对于数据单元节点的路径,从根节点开始的第一个标签位置开始匹配,如果所有数据单元节点路径在当前标签下的位置值相同,即p1i=p2i=...=pyi,则把当前标签和位置值顺序添加到最长公共路径中,即LCP+=/Ti[pi],如果所有数据单元节点路径在当前标签下的位置值存在不同值,则停止匹配,将当前最长公共路径值作为最终的最长公共路径值;\n[0026] 步骤4-5:化简步骤4-4计算得到的最长公共路径LCP;\n[0027] 对于最长公共路径中的一个步所对应的节点,表示为ni,对应的标签为Ti,如果其兄弟节点中不存在与其标签相同,且具有相同后继路径为“/标签i+1/....../标签m”的子孙节点的非数据单元节点,则该节点的位置值在最长公共路径的表达式中可以省略;\n[0028] 步骤4-6:采用生成谓词的方法计算局部路径,所述的局部路径是指每个节点私有的节点构成的路径,它能准确定位节点的谓词表达式,能够在定位所有的数据单元节点的同时过滤不相关的节点:\n[0029] 生成谓词的方法为:假设当前步的节点的标签为Ti,看当前步中节点集合的所有兄弟节点中,是否包含与其标签相同且具有相同后继路径为“/标签i+1/...../标签m”的子孙节点的非数据单元节点,若没有则省略谓词,若有则再查看当前节点中是否有非数据单元节点的XML属性,能够将当前节点与符合上面条件的非数据单元节点区分,如果有这样的XML属性则将该属性作为谓词表达式,若没有则进一步计算谓词中位置值的范围,把这些符合条件的非数据单元节点称为噪音节点;\n[0030] 所述计算谓词中位置值的范围的方法如下:\n[0031] 如果噪音节点只出现在数据单元节点集合之前,则对于该标签表示数据单元节点的谓词中位置的范围为:从所有数据单元节点的标签Ti所对应的节点位置中最小的位置值到最后一个具有该标签的节点;\n[0032] 如果噪音节点只出现在数据单元节点集合之后,则对于该标签表示数据单元节点的谓词中位置的范围为:从第一个到所有数据单元节点的标签Ti所对应的节点位置中最大的位置值;\n[0033] 如果数据节点被噪音节点有规律地分割,计算数据单元节点被噪音节点分割的间隔pinte,计算数据单元节点连续出现的长度pcont,并计算所有数据单元节点的标签Ti所对应的节点位置中最小的位置值和最大的位置值,表示为pmin和pmax,则符合下面位置条件的节点被认为是数据单元路径上的节点:(1)节点位置值减去pmin后,对pinte取模后的余数小于pcont值;(2)节点位置值小于最大噪音节点位置值减去pmax再加1后的值;\n[0034] 步骤4-7:合并最长公共路径和局部路径;\n[0035] 将最长公共路径和局部路径合并,得到在Web页面的XML文档中定位数据单元的路径Pu;\n[0036] 步骤5:计算抽取属性值的路径表达式,包括以下步骤;\n[0037] 步骤5-1:生成属性节点定位的路径;\n[0038] 假设在样本数据中,模式属性Ai的属性值所在的节点相对于数据单元节点的路径表示为:\n[0039] /标签Ai1[位置Ai1]/标签Ai2[位置Ai2]/……/标签Aik[位置Aik]\n[0040] 即/TAi1[pAi1]/TAi2[pAi2]/…/TAik[pAik],其中TAij表示标签Aij,pAij表示位置Aij,其中j=1,…,k,标签Aik为包含属性值节点的标签,位置Aik为该节点在其同标签兄弟节点中的位置,则可以使用步骤4-5的方法,对属性节点定位的路径进行化简;\n[0041] 步骤5-2:确定属性值抽取规则;\n[0042] 属性值抽取规则适用于以下两种情况:1、多个属性的属性值同时包含于一个节点文本中;2、节点文本内容中包含非属性值文本内容;\n[0043] 假设节点文本中非属性值文本内容为固定文本,且在同一节点文本中的不同属性的属性值之间也使用固定的文本进行分割,只需计算出节点文本中分割属性的固定字符串即可分离属性值文本或不同属性的属性值,方法为:\n[0044] 首先取多个样本Web页面,从中抽取包含相同属性的节点文本,如果该节点文本中全部字符均为属性值内容则直接抽取,否则提取公共子串并分割属性,从节点文本中抽取属性值的规则如下:\n[0045] 如果在节点文本中属性Ai的属性值之前有固定文本Text1,则首先对节点文本字符串Str取固定文本Text1之后的子字符串Str-after,再查看属性Ai的属性值之后,如果有固定文本Text2,则再对字符串Str-after取固定文本Text2之前的子字符串,表示为Str-before;\n[0046] 步骤6:生成数据抽取的XML查询语句;\n[0047] 抽取结构化数据的XML查询语句的构建主要是基于步骤4和步骤5所获得的数据节点路径和属性节点路径,在使用XQuery查询语言时,语句的结构主要是使用XQuery查询语言的FLWOR表达式,其中,各子句功能如下:\n[0048] FOR子句:定位数据单元节点集合;\n[0049] LET子句:增加谓词变量;\n[0050] WHERE子句:对数据单元节点基于属性路径的谓词进行过滤;\n[0051] ORDER子句:对结果进行排序的规则;\n[0052] RETURN子句:返回用户所要的数据格式;\n[0053] 根据XML查询语言XQuery语法特性,可以通过在RETURN子句中嵌套FLWOR子句的形式抽取Web页面中的层次结构的数据内容,下面为几种根据不同需求构建XML查询语句的方法:\n[0054] 步骤6-1:在数据抽取结果为层次结构时,所要生成的XML查询语句结构构建方法为:\n[0055] (1)语句的最外层使用固定的XML元素标签作为根节点,中间为XML查询表达式,对于XQuery语言是FLWOR表达式,即使用如下形式:<根节点标签>XML查询表达式根节点标签>;\n[0056] (2)在XML查询表达式中,使用数据单元的路径表达式定位数据单元节点变量,对于XQuery语言使用FOR语句定位数据单元节点变量,同时可以使用LET语句和WHERE语句添加定位数据单元节点的谓词;\n[0057] (3)在XML查询表达式中,在查询结果的输出部分,使用数据模式中的属性名或具有相同语义的文本作为XML文档中元素的标签,使用步骤5中生成的属性节点定位的路径和属性值抽取规则在数据单元节点变量下定位对应属性的属性值文本,具体形式为:<属性标签>{属性节点路径和属性值抽取规则构成的表达式}属性标签>\n[0058] XML查询语句的整体结构为:\n[0059] <根节点标签>\n[0060] {\n[0061] FOR数据单元节点变量in数据单元节点路径\n[0062] [LET语句]\n[0063] [WHERE语句]\n[0064] RETURN<数据实体名标签>\n[0065] <属性1标签>{属性1节点路径和属性值抽取规则构成的表达式}属性1标签>[0066] ……\n[0067] <属性n标签>{属性n节点路径和属性值抽取规则构成的表达式}属性n标签>[0068] 数据实体名标签>\n[0069] }\n[0070] 根节点标签>\n[0071] 步骤6-2:在数据抽取结果为关系形式的表结构时,所要生成的XML查询语句结构构建方法:\n[0072] 1在XML查询表达式中,使用数据单元的路径表达式定位数据单元节点变量,对于XQuery语言使用FOR语句定位数据单元节点变量,同时使用LET语句和WHERE语句添加定位数据单元节点的谓词;\n[0073] 2在XML查询表达式中,在查询结果的输出部分,按照输出结果的需求,依次排列由属性节点路径和属性值抽取规则构成的表达式,不同属性值的表达式之间用特殊的符号进行分隔,具体形式为:{属性1的属性值抽取表达式}分隔符{属性2的属性值抽取表达式}分隔符…分隔符{属性n的属性值抽取表达式}\n[0074] 步骤7:利用XML查询语句抽取数据;\n[0075] 使用XML查询处理的执行引擎,在目标网页转换后的XML文档上运行XML查询语句,即可从格式化为XML文档形式的网页中抽取指定的数据内容。\n[0076] 本发明优点:本发明的基于XML查询的Web数据抽取方法具有较广泛的适用性:\n(1)本发明能够生成精确的XML查询语句,基于路径表达式生成方法,对数据单元和属性值进行精确的XPath表达式定位,从而保证XML查询语句的正确性;(2)本发明具有较高的通用性,所生成对数据源抽取数据的XML查询语句可以运行在数据库或XML查询规范执行引擎上,能够与已有无缝融合;(3)本发明能够适应更加复杂的查询结果输出,通过调整结果树处子句的结构,支持抽取Web页面中层次结构的数据内容,不仅仅局限于简单的关系结构。\n附图说明\n[0077] 图1为本发明基于可扩展语言查询的网页数据抽取方法某电子售书网站的Web数据页面示意图;\n[0078] 图2为本发明基于可扩展语言查询的网页数据抽取方法流程图;\n[0079] 图3为本发明基于可扩展语言查询的网页数据抽取方法数据单元在页面文档DOM树的位置示意图。\n具体实施方式\n[0080] 下面结合附图和实施例对本发明作进一步详细说明:\n[0081] 图1为某电子售书网站的一个Web数据页面,采用本发明方法的流程如图2所示,步骤如下:\n[0082] 步骤1:确定从Web页面中抽取数据内容时所对应的数据模式S,其中数据实体名称E为“图书”,属性集合所包含的属性名称和属性的数据类型如表1所示:\n[0083] 表1为数据实体“图书”所包含的属性名称和属性的数据类型\n[0084] \n[0085] 步骤2:定位图1中样本页面中的数据区域、数据单元和属性文本,从图1可知,数据单元由数据单元1、数据单元2、数据单元3组成;\n[0086] 首先需要将HTML页面的格式化为符合XML语言标准的XML文档:\n[0087] \n[0088]
\n[0089]
顾客评分:
\n[0090]
\n[0091]
\n[0092]
出版时间:2007年07月
\n[0093]
本书收集了自1992年以来国内60余所重点高校和科学院、所300多套硕士研究生入学“算法与数据结构”考试试卷的1600多道试题,并给出了参考答案和分析。本书可以作为高等院校计算机及相关专业学习数据...
[0094]
\n[0095]
¥42.00¥35.70折扣:85折节省:¥6.30
\n[0096]
\n[0097]
\n[0098]
\n[0099] 步骤3:对样本页面中数据单元的属性文本进行标注,图1中3个数据单元中的文本分别标注如下:\n[0100] 数据单元1:\n[0101] 书名:算法与数据结构考研试题精析(第2版)\n[0102] 作者:陈守孔,胡潇琨,李玲\n[0103] 出版社:机械工业出版社\n[0104] 出版时间:2007年07月\n[0105] 图书简介:本书收集了自1992年以来国内60余所重点高校和科学院、所300多套硕士研究生入学“算法与数据结构”考试试卷的1600多道试题,并给出了参考答案和分析,本书可以作为高等院校计算机及相关专业学习数据……\n[0106] 原价:¥42.00\n[0107] 现价:¥35.70\n[0108] 折扣:85\n[0109] 节省金额:¥6.30\n[0110] 数据单元2:\n[0111] 书名:数据挖掘概念与技术(原书第2版)\n[0112] 作者:韩家炜,堪博,范明,孟小峰\n[0113] 出版社:机械工业出版社\n[0114] 出版时间:2007年03月\n[0115] 图书简介:本书全面地讲述数据挖掘领域的重要知识和技术创新,在第1版内容相当全面的基础上,第2版展示了该领域的最新研究成果,例如挖掘流、时序和序列数据以及挖掘时间空间、多媒体、文本和web数据,本书可作为……\n[0116] 原价:¥55.00\n[0117] 现价:¥42.30\n[0118] 折扣:77\n[0119] 节省金额:¥12.70\n[0120] 数据单元3:\n[0121] 书名:Oracle9i&10g编程艺术:深入数据库体系结构\n[0122] 作者:凯特,苏金国\n[0123] 出版社:人民邮电出版社\n[0124] 出版时间:2006年10月\n[0125] 图书简介:本书是一本关于oracle 9j az&10g数据库体系结构的权威图书,涵盖了所有最重要的oracle体系结构特性,包括文件、内存结构和进程,锁和闩,事务、并发和多版本,表和索引,数据类型,以及分区和并行,并……\n[0126] 原价:¥99.00\n[0127] 现价:¥74.30\n[0128] 折扣:75\n[0129] 节省金额:¥24.70\n[0130] 步骤4:生成数据单元节点的路径;\n[0131] 步骤4-1:数据单元U={U1,U2,U3},其中:U1表示数据单元1、U2表示数据单元2、U3表示数据单元3,其中数据单元1的书名为《算法与数据结构考研试题精析(第2版)》,数据单元2的书名为《数据挖掘概念与技术(原书第2版)》,数据单元3的书名为《Oracle9i&10g编程艺术:深入数据库体系结构》;\n[0132] 步骤4-2:数据单元已经在图1中标注出,数据单元对应的页面文档DOM树中的位置如图3中实心点所示,图3中根节点对应XML文档中标签为html的元素,对应图1中网页页面的最外层虚线,其中包括全部可视内容和不可视内容,节点1为标签为head的XML元素节点,对应图1中网页页面中的网页数据报文头部,其中内容包括的页面元信息为不可视元素,节点2为标签为body的XML元素节点,对应图1中网页页面中的最外层实线,,节点\n2.1至节点2.7都是节点2的孩子节点中标签为div的XML元素节点,其中节点2.7对应图\n1中网页页面中的最下方广告位,图中节点下的三角形表示该节点下的子树,节点2.6.1至节点2.6.3都是节点2.6的孩子节点中标签为div的XML元素节点,其中节点2.6.3对应图1中网页页面的数据区域所指向的实线区域,节点2.6.3.1是节点2.6.3孩子节点中第一个标签为div的XML元素节点,其中节点2.6.3.1对应图1中网页页面的数据单元1所指向的实线区域,节点div[1]表示该节点是其父节点孩子节点中第一个标签为div的XML元素节点,图3中的实心节点位数据单元所对应的节点,该节点的路径就是数据单元路径,该节点子树的文本节点中包含数据单元的属性值数据;\n[0133] 步骤4-3:计算路径表达式;\n[0134] 数据单元的节点在XML文档中的路径值分别为:\n[0135] P1:“/html[1]/body[1]/div[6]/div[3]/div[1]/div[4]/div[2]”[0136] P2:“/html[1]/body[1]/div[6]/div[3]/div[1]/div[5]/div[2]”[0137] P3:“/html[1]/body[1]/div[6]/div[3]/div[1]/div[6]/div[2]”[0138] 其中html,body,div都是XML元素标签,div[i]表示标签为div节点在其同标签的兄弟节点中是第i个;\n[0139] 步骤4-4:计算从根节点开始的最长公共路径LCP;\n[0140] 最长公共路径LCP:\n[0141] LCP:“/html[1]/body[1]/div[6]/div[3]/div[1]”\n[0142] 步骤4-5:化简步骤4-3计算得到的最长公共路径LCP;\n[0143] 化简后的最长公共路径表达式为:\n[0144] LCP:“/html/body/div[6]/div[3]/div[1]”\n[0145] 步骤4-6:计算局部路径;\n[0146] 局部路径的表达式为:\n[0147] “/div[.@class=″list_r_list″]/div[2]”\n[0148] 步骤4-7:合并最长公共路径和局部路径;\n[0149] 合并后得到数据单元节点的路径表达式为:\n[0150] “/html/body/div[6]/div[3]/div[1]/div[.@class = ″ list_r_list ″ ]/div[2]”\n[0151] 其中div[.@class=″list_r_list″]表示具有XML属性class,Class为在html文档中标签节点的样式属性,且属性值为list_r_list的XML标签为div的元素节点;\n[0152] 步骤5:生成抽取属性值的路径表达式;\n[0153] 对于数据单元1,基于其中结构生成抽取属性值的路径表达式如下:\n[0154] 1.属性“书名”\n[0155] 路径定位表达式为“/h2/a/”,其中h2表示标签为h2的XML元素节点,a表示标签为a的XML元素节点;\n[0156] 属性值抽取规则:在本属性节点中的内容全部为属性值信息,可以使用XQuery语言中的text()函数作为抽取属性值的函数。\n[0157] 2.属性“作者”\n[0158] 路径定位表达式为“/h4[1]/a”,其中h4[1]表示第一个标签为h4的XML元素节点,a表示标签为a的XML元素节点;\n[0159] 属性值抽取规则:在本属性节点中的内容全部为属性值信息。\n[0160] 3.属性“出版社”\n[0161] 路径定位表达式为“/h4[2]/a”,其中h4[2]表示第二个标签为h4的XML元素节点,a表示标签为a的XML元素节点;\n[0162] 属性值抽取规则:在本属性节点中的内容全部为属性值信息。\n[0163] 4.属性“出版时间”\n[0164] 路径定位表达式为“/h4[3]”,其中h4[3]表示第三个标签为h4的XML元素节点;\n[0165] 属性值抽取规则:本属性节点中的内容部分为属性值信息,抽取规则为消除公共非属性值字符串“出版时间:”。\n[0166] 5.属性“图书简介”\n[0167] 路径定位表达式为“/h5”,其中h5表示标签为h5的XML元素节点;\n[0168] 属性值抽取规则:在本属性节点中的内容全部为属性值信息。\n[0169] 6.属性“原价”\n[0170] 路径定位表达式为“/h6/span[1]”,其中h6表示标签为h6的XML元素节点,span[1]表示第一个标签为span的XML元素节点;\n[0171] 属性值抽取规则:本属性节点中的内容部分为属性值信息,抽取规则为消除公共非属性值字符串“¥”。\n[0172] 7.属性“现价”\n[0173] 路径定位表达式为“/h6/span[2]”,其中h6表示标签为h6的XML元素节点,span[2]表示第二个标签为span的XML元素节点;\n[0174] 属性值抽取规则:本属性节点中的内容部分为属性值信息,抽取规则为消除公共非属性值字符串“¥”。\n[0175] 8.属性“折扣”\n[0176] 路径定位表达式为“/h6/”,其中h6表示标签为h6的XML元素节点;\n[0177] 属性值抽取规则:本属性节点中的内容部分为属性值信息,抽取规则为消除节点文本字符串中前部公共非属性值字符串“折扣:”和后部公共非属性值字符串“折”。\n[0178] 9.属性“节省金额”\n[0179] 路径定位表达式为“/h6/”,其中h6表示标签为h6的XML元素节点;\n[0180] 属性值抽取规则:本属性节点中的内容部分为属性值信息,抽取规则为消除节点文本字符串中前部公共非属性值字符串“节省:¥”。\n[0181] 步骤6:生成数据抽取的XML查询语句;\n[0182] 以生成XML格式抽取结果数据为例,使用XQuery作为XML查询语言,对于本示例所生成的XQuery语句如下:\n[0183] \n[0184] \n[0185] 其中,FOR、IN、RETURN为XQuery查询语言关键字,text()为获取节点内文本的函数,substring-before()为获取字符串中某一特殊字符串之前的子字符串函数,substring-after()为获取字符串中某一特殊字符串之后的子字符串函数。\n[0186] 步骤7:执行以上XML查询语句抽取数据;\n[0187] 由以上XML查询语句执行对示例页面的数据抽取后,获得的XML数据内容为:\n[0188] <图书列表>\n[0189] <图书>\n[0190] <书名>算法与数据结构考研试题精析(第2版)书名>\n[0191] <作者>陈守孔 胡潇琨 李玲作者>\n[0192] <出版社>机械工业出版社出版社>\n[0193] <出版时间>2007年07月出版时间>\n[0194] <图书简介>本书收集了自1992年以来国内60余所重点高校和科学院、所300多套硕士研究生入学“算法与数据结构”考试试卷的1600多道试题,并给出了参考答案和分析。本书可以作为高等院校计算机及相关专业学习数据图书简介>\n[0195] <原价>42.00原价>\n[0196] <现价>35.70现价>\n[0197] <折扣>85折扣>\n[0198] <节省金额>6.30节省金额>\n[0199] 图书>\n[0200] <图书>\n[0201] <书名>数据挖掘概念与技术(原书第2版)书名>\n[0202] <作者>韩家炜 堪博 范明 孟小峰作者>\n[0203] <出版社>机械工业出版社出版社>\n[0204] <出版时间>2007年03月出版时间>\n[0205] <图书简介>本书全面地讲述数据挖掘领域的重要知识和技术创新。在第1版内容相当全面的基础上,第2版展示了该领域的最新研究成果,例如挖掘流、时序和序列数据以及挖掘时间空间、多媒体、文本和web数据。本书可作为图书简介>\n[0206] <原价>55.00原价>\n[0207] <现价>42.30现价>\n[0208] <折扣>77折扣>\n[0209] <节省金额>12.70节省金额>\n[0210] 图书>\n[0211] <图书>\n[0212] <书名>Oracle9i&10g编程艺术:深入数据库体系结构书名>\n[0213] <作者>凯特苏金国作者>\n[0214] <出版社>人民邮电出版社出版社>\n[0215] <出版时间>2006年10月出版时间>\n[0216] <图书简介>本书是一本关于oracle 9j az&10g数据库体系结构的权威图书,涵盖了所有最重要的oracle体系结构特性,包括文件、内存结构和进程,锁和闩,事务、并发和多版本,表和索引,数据类型,以及分区和并行,并图书简介>\n[0217] <原价>99.00原价>\n[0218] <现价>74.30现价>\n[0219] <折扣>75折扣>\n[0220] <节省金额>24.70节省金额>\n[0221] 图书>\n[0222] <图书列表>法律信息
- 2016-01-06
未缴年费专利权终止
IPC(主分类): G06F 17/30
专利号: ZL 201010545520.2
申请日: 2010.11.16
授权公告日: 2012.09.05
- 2012-09-05
- 2011-04-20
实质审查的生效
IPC(主分类): G06F 17/30
专利申请号: 201010545520.2
申请日: 2010.11.16
- 2011-03-09
引用专利(该专利引用了哪些专利)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 |
1
| |
2009-11-18
|
2009-01-21
| | |
2
| |
2008-10-22
|
2008-06-11
| | |
被引用专利(该专利被哪些专利引用)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 | 该专利没有被任何外部专利所引用! |