一种html文档信息抽取表达式的方法及系统的制作方法

文档序号:6635549阅读:159来源:国知局
一种html文档信息抽取表达式的方法及系统的制作方法
【专利摘要】本发明适用于搜索引擎领域,提供了一种HTML文档信息抽取表达式的方法,所述方法包括:A、接收表达式并将表达式拆解成多个子表达式;B、利用选择器从HTML文档中抽取出每个子表达式数据所在的文档节点;C、从抽取的文档节点中抽取出每个表达式指定属性的值;D、根据正则表达式将抽取的指定属性的值进行正则抽取或替换;E、根据判断表达式配置对指定属性的值进行判断处理;F、根据预设范围值保留预设范围值内的子表达式的序号;G、判断是否有多个子表达式,多个子表达式以“与”和“或”的关系链接。通过抽取方法中增加对节点范围的顺序范围的表达和增加对对文本信息进行处理的能力,使得抽取到的结果更精确,本方法简单、操作方便。
【专利说明】一种HTML文档信息抽取表达式的方法及系统

【技术领域】
[0001]本发明属于引擎搜索领域,尤其涉及一种对HTML文档中需要的信息进行精确快速抽取的方法及系统。

【背景技术】
[0002]在HTML文档信息抽取中,主要体现在不基于结构化文档的抽取方式和基于结构化文档的抽取方式,其中不基于结构化文档的抽取方式包括人工智能分析及基于正则表达式的纯文本处理;基于结构化文档的抽取方式包括基于XPath表达式的路径配置及基于CSS选择器表达式的配置;人工智能分析是指开发出一种对文本处理具备“学习能力”的程序,使用人力进行大量的“训练”,使其对训练样本类似的文档具备信息抽取的能力。基于正则表达式的纯文本处理是指正则表达式用于检索、替换那些符合表达式描述的文本。该表达式的工作原理不依赖文档结构,适用于任何文本的检索、替换操作,通常情况下效率高效。基于XPath表达式的路径配置是指HTML文档是一种树形结构的文本文档,XPath是一种描述树形结构路径的表达式。通过该表达式可以描述HTML文档中需要的数据所在的节点。基于CSS选择器表达式的配置是指选择器用于准确地描述需要的HTML节点,允许通过标签名称、属性、内容等方面描述需要的节点。该表达式相比XPath,其选择HTML节点的方式更加灵活,使得表达式不依赖完全一致的文档结构,当文档结构发生变化时,具备较强的兼容性。
[0003]人工智能分析随着整个互联网的发展,各网站不断更新,其HTML文档结构和内容产生变化,需要不断投入人力进行海量训练以维持其信息抽取的准确性,且开发困难,维护成本大。该方式基于海量样本数据进行分析计算得出结果,效率非常低下。
[0004]基于正则表达式的纯文本处理仅仅使用该表达式从HTML文档中抽取需要的数据,其表达式编写极为复杂,甚至有时候无法描述,使得该方式仅适用于HTML文档中需要的数据特征清晰,易于检索的情况。
[0005]基于XPath表达式的路径配置该表达式只能描述需要的文档节点,并不能描述节点中具体需要的数据的形态,所以需要额外的手段来得到节点中的最终数据。并且XPath非常依赖完全一致的文档结构,若文档结构稍有变化,其表达式便极易失效。
[0006]基于CSS选择器表达式的配置,此表达式与XPath—样,仅用于HTML文档中数据节点的指定,对节点中的具体数据并无描述与处理。
[0007]以上两种基于HTML结构文档的表达式,都不具备对节点顺序范围的表达,例如无法描述满足某要求的“倒数第N个节点”、“第N个节点之后的节点”等。同时,这两种表达式都仅仅只能描述需要的信息所在的节点,不具备对需要的文本信息进行处理的能力。


【发明内容】

[0008]本发明的目的在于提供一种HTML文档信息抽取表达式的方法及系统,旨在解决表达式不具备对节点顺序范围的表达、不具备对需要的文本信息进行处理的能力的问题。
[0009]本发明是这样实现的,一种HTML文档信息抽取表达式的方法,所述方法包括以下步骤:
A、接收表达式并将表达式拆解成多个子表达式;
B、利用选择器从HTML文档中抽取出每个子表达式数据所在的文档节点;
C、从抽取的文档节点中抽取出每个表达式指定属性的值;
D、根据正则表达式将抽取的指定属性的值进行正则抽取或替换;
E、根据判断表达式配置对指定属性的值进行判断处理;
F、根据预设范围值保留预设范围值内的子表达式的序号;
G、判断是否有多个子表达式,如否,则得到用户输入表达式的抽取结果;如是,将多个子表达式以两种方式连接在一起;当多个子表达式以“与”的方式连接在一起时,则返回步骤B ;当多个子表达式以“或”的方式连接在一起时,则判断上一子表达式是否已经抽取到HTML文档信息数据,如是,则得到用户输入表达式的抽取结果;如否,则返回步骤B。
[0010]本发明的进一步技术方案是:所述步骤E包括以下步骤:
E1、判断抽取到的指定属性的值的文本中是否包含判断部分文本;如是,则获得“结果一”指定的文本并执行步骤E2 ;如否,则获得“结果二”然后执行步骤E2 ;
E2、对获取的结果文本进行判断是否为“Oself ”;如否,则执行步骤F ;如是,则将self ”替换为抽取到的原始文本并执行步骤F。
[0011]本发明的进一步技术方案是:所述步骤A包括以下步骤:
Al、接收用户输入的表达式;
A2、将用户输入的表达式拆解成多个子表达式。
[0012]本发明的进一步技术方案是:所述判断表达式为【”文本”? ”@self/文本”:”@self/文本”】。
[0013]本发明的进一步技术方案是:当抽取到的指定属性的值为多个时,序号用于指定保留指定范围的值,不在指定范围的值将会被丢弃,指定的所述序号为整数,其包括:精确正序指定、精确倒序指定、拼接结果序列、精确范围指定、精确起始范围指定及精确截止范围指定。
[0014]本发明的另一目的在于提供一种HTML文档信息抽取表达式的系统,该系统包括: 接收拆解模块,用于接收表达式并将表达式拆解成多个子表达式;
抽取节点模块,用于利用选择器从HTML文档中抽取出每个子表达式数据所在的文档节点;
抽取值模块,用于从抽取的文档节点中抽取出每个表达式指定属性的值;
抽取替换模块,用于根据正则表达式将抽取的指定属性的值进行正则抽取或替换;
判断处理模块,用于根据判断表达式配置对指定属性的值进行判断处理;
保留模块,用于根据预设范围值保留预设范围值内的子表达式的序号;
语法检测模块,用于判断是否有多个子表达式,如否,则得到用户输入表达式的抽取结果;如是,将多个子表达式以两种方式连接在一起;当多个子表达式以“与”的方式连接在一起时,则返回抽取节点模块;当多个子表达式以“或”的方式连接在一起时,则判断上一子表达式是否已经抽取到HTML文档信息数据,如是,则得到用户输入表达式的抽取结果;如否,则返回抽取节点模块。
[0015]本发明的进一步技术方案是:所述判断处理模块包括:
判断文本单元,用于判断抽取到的指定属性的值的文本中是否包含判断部分文本;如是,则获得“结果一”指定的文本并执行结果文本判断单元;如否,则获得“结果二”然后执行结果文本判断单元;
结果文本判断单元,用于对获取的结果文本进行判断是否为“Oself ”;如否,则执行保留模块;如是,则将“Oself ”替换为抽取到的原始文本并执行保留模块。
[0016]本发明的进一步技术方案是:所述接收拆解模块包括:
输入接收单元,用于接收用户输入的表达式;
拆解单元,用于将用户输入的表达式拆解成多个子表达式。
[0017]本发明的进一步技术方案是:所述判断表达式为【”文本”? ”@self/文本”:” @self/文本”】。
[0018]本发明的进一步技术方案是:当抽取到的指定属性的值为多个时,序号用于指定保留指定范围的值,不在指定范围的值将会被丢弃,指定的所述序号为整数,其包括:精确正序指定、精确倒序指定、拼接结果序列、精确范围指定、精确起始范围指定及精确截止范围指定。
[0019]本发明的有益效果是:通过在抽取方法中增加对节点范围的顺序范围的表达和增加对对文本信息进行处理能力,使得抽取到的结果更精确,本方法简单、操作方便。语法简洁,不需要填写该表达式的所有单元,除“选择节点”和“选择值”必须表达外,该语法其它部分均为可选。操作者学习成本低廉。编写该表达式所需的大部分专业技能被业内通用技能覆盖,使得从业人员快速适应。该表达式执行效率高效,性能卓越。

【专利附图】

【附图说明】
[0020]图1是本发明实施例提供的HTML文档信息抽取表达式的方法的流程图;
图2是本发明实施例提供的HTML文档信息抽取表达式的系统的结构框图。

【具体实施方式】
[0021]附图标记:10_接收拆解模块20-抽取节点模块30-抽取值模块40-抽取替换模块50-判断处理模块60-保留模块70-语法检测模块。
[0022]图1示出了本发明提供的一种HTML文档信息抽取表达式的方法的流程图,其详述如下:
步骤SI,在使用中,首先接收用户输入的搜索表达式,其中表达式可以是一段话、一句话、一组词等等,当接收了用户输入的表达式,开始对用户输入的表达式进行拆解处理,将用户输入的表达式拆解成多个子表达式;其中多个子表达式可能是几句话或者多个词组等,将表达式拆解后执彳T步骤S2。
[0023]步骤S2,利用选择器从HTML文档中抽取出拆解出的每个子表达式的数据所在的文档节点;选择器用于描述需要的信息所在的HTML文档节点,以便于“HTML文档信息抽取表达式”的其它部分从选择到的节点中获取数据并处理。
[0024]步骤S3,从抽取的文档节点中抽取出每个子表达式的指定属性的值;遍历抽取到的文档节点的所有属性名称,检查属性名称列表中是否有表达式指定的属性名。如果有,得到该属性的值。如果没有,不做任何操作。属性可指定为文档节点的任意属性名称,意为获取该属性的值。除此之外属性可指定为“text”和“HTML”,分别表示“获取节点中的纯文本部分”和“获取节点中子节点的html形式文本”。
[0025]步骤S4,根据正则表达式将抽取的指定属性的值进行正则抽取或替换;正则表达式用于对结果序列中的字符串内容进行检索保留、替换等操作。
[0026]步骤S5,根据判断表达式配置对指定属性的值进行判断处理;首先判断抽取到的指定属性的值的文本中是否包含判断部分文本,如果是包含的,则获得“结果一”指定的文本并进行下一步骤;如果没有包含,则获得“结果二”指定的文本并执行下一步骤。其次是对获取的结果文本进行判断是否为“Oself ”,如果没有,则执行步骤S6,如果是,则将“Oself”替换为抽取到的原始文本并执行步骤S6。判断表达式用于对“HTML文档信息抽取表达式”的必要部分所抽取到的数据做判断处理。
[0027]步骤S6,根据预设范围值保留预设范围值内的子表达式的序号;其中序号为当抽取到的值为多个时,序号用于指定保留指定范围的值,不在指定范围的值将会被丢弃。指定的序号为必须为整数,分为以下几种情形:1.精确正序指定:填写一个大于O的正整数以指定仅保留指定序号的值,例如:[I]。2.精确倒序指定:填与一个小于O的正整数,以指定保留结果序列中倒数第N个值,例如[-1]。3.拼接结果序列:填写0,以指定将结果序列中的所有值使用“;”拼接,形成一个唯一结果,例如:[O]。4.精确范围指定:填写两个正整数,较小的正整数在前,中间用英文逗号隔开,例如:[M,N]。意为保留结果序列中第M个至第N个值。5.精确起始范围指定:填写一个正整数,后面拼接一个英文逗号,例如:[3,]。意为保留结果序列中序号大于等于3的值。6.精确截止范围指定:填写一个英文逗号,后面拼接一个正整数,例如:[,3]。意为保留结果序列中序号小于等于3的值。
[0028]步骤S7,判断是否有多个子表达式,如否,则得到用户输入表达式的抽取结果;如是,将多个子表达式以两种方式连接在一起;当多个子表达式以“和”的方式连接在一起时,则返回步骤S2 ;当多个子表达式以“或”的方式连接在一起时,则判断是否单个表达式已经抽取到HTML文档信息数据,如是,则得到用户输入表达式的抽取结果;如否,则返回步骤S2。在某些情况下我们需要将多个“HTML文档信息抽取表达式”所得到的结果拼接起来,可以使用“&&”符号连接多个“HTML文档信息抽取表达式”实现该功能。在某些情况下,我们不确定所需要的所处于页面中的哪些节点中,可以使用多个“HTML文档信息抽取表达式”进行抽取,按照表达式前后顺序,依次进行抽取,直到当其中一个表达式获取到满足表达式描述的值时,结束抽取,并返回抽取到的结果。通过在抽取方法中增加对节点范围的顺序范围的表达和增加对对文本信息进行处理能力,使得抽取到的结果更精确,本方法简单、操作方便。
[0029]图2示出了本发明提供的一种HTML文档信息抽取表达式的系统的结构框图,其中,提供一种HTML文档信息抽取表达式的系统,该系统包括:
接收拆解模块10,用于接收表达式并将表达式拆解成多个子表达式;
抽取节点模块20,用于利用选择器从HTML文档中抽取出每个子表达式数据所在的文档节点;
抽取值模块30,用于从抽取的文档节点中抽取出每个表达式指定属性的值;
抽取替换模块40,用于根据正则表达式将抽取的指定属性的值进行正则抽取或替换; 判断处理模块50,用于根据判断表达式配置对指定属性的值进行判断处理;
保留模块60,用于根据预设范围值保留预设范围值内的子表达式的序号;
语法检测模块70,用于判断是否有多个子表达式,如否,则得到用户输入表达式的抽取结果;如是,将多个子表达式以两种方式连接在一起;当多个子表达式以“与”的方式连接在一起时,则返回抽取节点模块;当多个子表达式以“或”的方式连接在一起时,则判断上一子表达式是否已经抽取到HTML文档信息数据,如是,则得到用户输入表达式的抽取结果;如否,则返回抽取节点模块。
[0030]所述判断处理模块包括:
判断文本单元,用于判断抽取到的指定属性的值的文本中是否包含判断部分文本;如是,则获得“结果一”指定的文本并执行结果文本判断单元;如否,则获得“结果二”然后执行结果文本判断单元;
结果文本判断单元,用于对获取的结果文本进行判断是否为“Oself ”;如否,则执行保留模块;如是,则将“Oself ”替换为抽取到的原始文本并执行保留模块。
[0031]所述接收拆解模块包括:
输入接收单元,用于接收用户输入的表达式;
拆解单元,用于将用户输入的表达式拆解成多个子表达式。
[0032]所述判断表达式为【”文本”? ” Oself/文本”:” Oself/文本”】。
[0033]当抽取到的指定属性的值为多个时,序号用于指定保留指定范围的值,不在指定范围的值将会被丢弃,指定的所述序号为整数,其包括:精确正序指定、精确倒序指定、拼接结果序列、精确范围指定、精确起始范围指定及精确截止范围指定。
[0034]通过在抽取方法中增加对节点范围的顺序范围的表达和增加对对文本信息进行处理能力,使得抽取到的结果更精确,本方法简单、操作方便。
[0035]以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
【权利要求】
1.一种HTML文档信息抽取表达式的方法,其特征在于,所述方法包括以下步骤: A、接收表达式并将表达式拆解成多个子表达式; B、利用选择器从HTML文档中抽取出每个子表达式数据所在的文档节点; C、从抽取的文档节点中抽取出每个表达式指定属性的值; D、根据正则表达式将抽取的指定属性的值进行正则抽取或替换; E、根据判断表达式配置对指定属性的值进行判断处理; F、根据预设范围值保留预设范围值内的子表达式的序号; G、判断是否有多个子表达式,如否,则得到用户输入表达式的抽取结果;如是,将多个子表达式以两种方式连接在一起;当多个子表达式以“与”的方式连接在一起时,则返回步骤B ;当多个子表达式以“或”的方式连接在一起时,则判断上一子表达式是否已经抽取到HTML文档信息数据,如是,则得到用户输入表达式的抽取结果;如否,则返回步骤B。
2.根据权利要求1所述的方法,其特征在于,所述步骤E包括以下步骤: E1、判断抽取到的指定属性的值的文本中是否包含判断部分文本;如是,则获得“结果一”指定的文本并执行步骤E2 ;如否,则获得“结果二”然后执行步骤E2 ; E2、对获取的结果文本进行判断是否为“Oself ”;如否,则执行步骤F ;如是,则将self ”替换为抽取到的原始文本并执行步骤F。
3.根据权利要求2所述的方法,其特征在于,所述步骤A包括以下步骤: Al、接收用户输入的表达式; A2、将用户输入的表达式拆解成多个子表达式。
4.根据权利要求3所述的方法,其特征在于,所述判断表达式为【”文本”?"iself/文本”:” Oself/文本”】。
5.根据权利要求4所述的方法,其特征在于,当抽取到的指定属性的值为多个时,序号用于指定保留指定范围的值,不在指定范围的值将会被丢弃,指定的所述序号为整数,其包括:精确正序指定、精确倒序指定、拼接结果序列、精确范围指定、精确起始范围指定及精确截止范围指定。
6.一种HTML文档信息抽取表达式的系统,其特征在于,该系统包括: 接收拆解模块,用于接收表达式并将表达式拆解成多个子表达式; 抽取节点模块,用于利用选择器从HTML文档中抽取出每个子表达式数据所在的文档节点; 抽取值模块,用于从抽取的文档节点中抽取出每个表达式指定属性的值; 抽取替换模块,用于根据正则表达式将抽取的指定属性的值进行正则抽取或替换; 判断处理模块,用于根据判断表达式配置对指定属性的值进行判断处理; 保留模块,用于根据预设范围值保留预设范围值内的子表达式的序号; 语法检测模块,用于判断是否有多个子表达式,如否,则得到用户输入表达式的抽取结果;如是,将多个子表达式以两种方式连接在一起;当多个子表达式以“与”的方式连接在一起时,则返回抽取节点模块;当多个子表达式以“或”的方式连接在一起时,则判断上一子表达式是否已经抽取到HTML文档信息数据,如是,则得到用户输入表达式的抽取结果;如否,则返回抽取节点模块。
7.根据权利要求6所述的系统,其特征在于,所述判断处理模块包括: 判断文本单元,用于判断抽取到的指定属性的值的文本中是否包含判断部分文本;如是,则获得“结果一”指定的文本并执行结果文本判断单元;如否,则获得“结果二”然后执行结果文本判断单元; 结果文本判断单元,用于对获取的结果文本进行判断是否为“Oself ”;如否,则执行保留模块;如是,则将“Oself ”替换为抽取到的原始文本并执行保留模块。
8.根据权利要求7所述的系统,其特征在于,所述接收拆解模块包括: 输入接收单元,用于接收用户输入的表达式; 拆解单元,用于将用户输入的表达式拆解成多个子表达式。
9.根据权利要求8所述的系统,其特征在于,所述判断表达式为【”文本”?"iself/文本”:” Oself/文本”】。
10.根据权利要求8所述的系统,其特征在于,当抽取到的指定属性的值为多个时,序号用于指定保留指定范围的值,不在指定范围的值将会被丢弃,指定的所述序号为整数,其包括:精确正序指定、精确倒序指定、拼接结果序列、精确范围指定、精确起始范围指定及精确截止范围指定。
【文档编号】G06F17/30GK104462268SQ201410681853
【公开日】2015年3月25日 申请日期:2014年11月24日 优先权日:2014年11月24日
【发明者】杜卫红, 谢立欧 申请人:深圳市比一比网络科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1