一种标记文件解析方法和装置的制作方法

文档序号:6367423阅读:308来源:国知局

专利名称::一种标记文件解析方法和装置的制作方法
技术领域
:本申请涉及数据解析
技术领域
,特别是涉及一种标记文件解析方法和装置。
背景技术
:目前互联网技术已经深入影响人们的生活,诸如电子邮箱、论坛、网页游戏等也已成为人们日常工作和娱乐中不可或缺的一部分。但上述互联网应用大多需要用户注册并登录后才能使用,因此用户需要记忆大量的用户名和密码。为了帐号的安全,用户通常还需要设置较为复杂的数字、字母、特殊符号组合的密码,进一步加大了记忆的难度,在每次登录时还需要手工输入,这一切无疑对用户的使用造成了负担。网页自动填表就是解决这一问题的技术,它可以在保存用户在网页中输入的用户名和密码,在下一次用户打开相同网页时,自动帮用户填写已保存的用户名和密码,用户不必再记忆和填写大量的用户名和密码,使用各种网络资源和服务更加轻松随意。自动填表这项技术中的关键在于能够预先检测并判断页面中是否存在用户需要填写并提交的表单,是登录表单?还是注册表单?首先要能识别这些表单,然后才可以实现后续的保存、帮助用户填写的步骤。目前,现有识别网页表单的技术一般包括以下步骤首先,获取网页中的表单。通过识别网页对应的超文本代码(HTML,HyperTextMarkupLanguage)中是否存在〈form〉标签,若存在,就将该〈form〉标签内所有〈input〉输入框作为一个表单。参见下面的一个〈form〉表单的示例代码〈formaction="form_action.asp"method="get">用户名〈inputtype="text"name="fname"/></p>密马<inputtype="password"name="lname"/></p>〈inputtype=”submit”value=”提交”丨></form>其次,识别所获表单的类型,确定该表单是否为需要自动填表的对象。其关键是要能识别该表单是否是登录表单。具体的,通过判断该表单中输入框〈input〉的类型type为密码框password的输入框个数来判断该表单是否是登录表单。若该表单中密码输入框个数为I则认为该表单为登录表单。最后,对识别出的登录表单实施自动填写等相关操作。可以看出,以上现有表单识别过程中首先要找到网页中的〈form〉标签,将该〈form〉标签内的输入框作为一个表单后才能实施后续进一步的分析。但由于目前很多页面中并不是所有表单实现都使用〈form〉标签,而是存在多种实现表单的方式,如在<div>标签中实现含有输入框的表单,其HTML参考代码如下<divstyle="color:#OOFFOO">用户名〈inputtype="text"name="fname"/></p>密马<inputtype="password"name="lname"/></p>〈inputtype=”submit”value=”提交n/></div>面对这种大量存在的缺少〈form〉标签的表单,基于现有技术的表单识别方法就会失败,造成识别成功率非常低。据统计,上述现有技术表单识别成功率只有40%左右。总之,需要本领域技术人员迫切解决的一个技术问题就是如何能够提高现有网页表单识别技术中因网页中缺失〈form〉标签而导致的识别失败,识别成功率低的问题。
发明内容本申请所要解决的技术问题是提供一种标记文件解析方法和装置,以便有效解决现有技术解析HTML网页时成功率低的问题。为了解决上述问题,本申请公开了一种标记文件解析方法,包括获取标记文件中的标签对象,生成标签集合;根据所述标签集合中标签对象的公共属性,对所述标签对象进行分组,从所述分组的结果获得一个或多个分组标签;依据预置的标记文件解析映射表,匹配所述一个或多个分组标签中的标签对象的属性;从相匹配的分组标签中,获取标记文件解析用的数据。优选的,根据所述标签集合中标签对象的公共属性对所述标签对象进行分组,包括将标签集合中具有相同父节点的标签对象置于同一分组标签内。优选的,所述从所述分组的结果获得一个或多个分组标签之后还包括分组标签再分组,包括判断当前分组结果中一个或多个分组标签;若当前分组标签包含两个或多个标签对象,且所述两个或多个标签对象不具有相同的父节点,则将当前分组标签内具有相同父节点的标签对象置于另一分组标签内;重复上述步骤直到当前分组标签不可再分组。优选的,所述标记文件是超文本标记HTML文件。优选的,所述标签对象是〈input〉输入框;所述依据预置的标记文件解析映射表,匹配所述一个或多个分组标签中的标签对象的属性还包括若当前分组标签中仅含有I个密码输入框,且位于所述密码输入框下级兄弟节点的标签对象不是文本输入框,则当前分组标签为登录表单。优选的,若当前分组标签为登录表单,且当前分组标签内密码输入框存在多级父节点,且当前分组标签不可再分,且所述密码输入框的最近父节点内包括至少一个文本输入框,则将所述密码输入框最近父节点内的标签对象置于新的分组标签内。优选的,所述依据预置的标记文件解析映射表,匹配所述一个或多个分组标签中的标签对象的属性还包括若当前分组标签中仅含有I个密码输入框,且位于所述密码输入框下级兄弟节点的标签对象是文本输入框,则当前分组标签为注册表单。优选的,所述依据预置的标记文件解析映射表,匹配所述一个或多个分组标签中的标签对象的属性还包括若当前分组标签中包含2个位置连续的且互为兄弟节点的密码输入框,则当前分组标签为注册表单。优选的,所述依据预置的标记文件解析映射表,匹配所述一个或多个分组标签中的标签对象的属性还包括若当前分组标签中包含3个位置连续且互为兄弟节点的密码输入框,则当前分组标签为密码修改表单。优选的,在按预定规则对所述一个或多个分组标签进行解析之前还包括为解决上述问题,本申请还公开了一种网页填充方法,包括标记文件解析;目标数据存储;目标数据填充;所述标记文件解析包括获取标记文件中的标签对象,生成标签集合;根据所述标签集合中标签对象的公共属性,对所述标签对象进行分组,从所述分组的结果获得一个或多个分组标签;依据预置的标记文件解析映射表,匹配所述一个或多个分组标签中的标签对象的属性;相匹配的分组标签为目标输入项;所述目标数据存储包括从所述目标输入项中获取目标数据并存储在配置信息中;所述目标数据填充包括从配置信息中获取目标数据并填充在所述标记文件对应的目标输入项中。为解决上述问题,本申请还公开了一种标记文件解析装置,包括获取模块,用于获取标记文件中的标签对象;集合生成模块,用于将所述获取模块得到的标签对象生成标签集合;分组模块,用于根据所述标签集合中标签对象的公共属性对所述标签对象进行分组;分组标签获取模块,用于获取所述分组模块生成的一个或多个分组标签;解析模块,用于依据预置的标记文件解析映射表,匹配所述分组标签获取模块所获取的一个或多个分组标签中的标签对象的属性;从相匹配的分组标签中获取标记文件解析用的数据。优选的,所述分组模块还包括第一分组单元,用于将标签集合中具有相同父节点的标签对象置于同一分组标签内。优选的,所述分组模块还包括第二分组单元,用于判断若当前分组标签包含两个或多个标签对象,且所述两个或多个标签对象不具有相同的父节点,则将当前分组标签内具有相同父节点的标签对象置于另一分组标签内;第二分组单元重复执行操作直到当前分组标签不可再分组。优选的,所述标记文件是超文本标记HTML文件。优选的,所述获取模块所获取的标签对象是〈input〉输入框。优选的,所述解析模块还包括登录表单识别单元用于判断若当前分组标签中仅含有I个密码输入框,且位于所述密码输入框下级兄弟节点的标签对象不是文本输入框,则当前分组标签为登录表单。优选的,所述解析模块还包括第一注册表单识别单元,用于判断若当前分组标签中仅含有I个密码输入框,且位于所述密码输入框下级兄弟节点的标签对象是文本输入框,则当前分组标签为注册表单。优选的,所述解析模块还包括第二注册表单识别单元,用于判断若当前分组标签中包含2个位置连续的且互为兄弟节点的密码输入框,则当前分组标签为注册表单。优选的,所述解析模块还包括密码修改表单识别单元,用于判断若当前分组标签中包含3个位置连续且互为兄弟节点的密码输入框,则当前分组标签为密码修改表单。与现有技术相比,本申请具有以下优点现有技术在识别HTML网页文件时需要先找到〈form〉标签,然后查找该〈form〉标签旗下的〈input〉输入框,但由于存在大量缺少〈form〉标签的HTML网页文件,因此使用现有的文件识别技术就会因为无法找到〈form〉标签而无法获取〈input〉输入框,这样一来造成对互联网中众多HTML网页文件的解析失败,解析成功率低下。为此,我们提出对整个HTML网页文件中的〈input〉标签进行查找获取,同时对所获得〈input〉标签集合按每个〈input〉标签所具有的公共属性进行分组,让原本没有明显联系的〈input〉标签按其共有属性关联在一起组成一个或多个分组标签,由于同一分组标签内的〈input〉具有相同的公共属性,非常便于做进一步分析使用。在此过程中,完全不用考虑〈input〉标签在HTML网页文件中的位置和表现方式,对于没有〈form〉标签的网页文件,仍可成功进行解析,极大地提高了对HTML网页文件解析的成功率。据统计,可将对网页文件解析的成功率从现有技术的40%提高到90%左右。图I是本申请一种标记文件解析方法一实施例的流程示意图;图2是本申请一种标记文件解析方法另一实施例的流程不意图;图3是一个HTML网页文件标签分布示意图;图4是本申请一种标记文件解析装置一实施例的结构示意图。具体实施例方式为使本申请的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本申请作进一步详细的说明。目前,使用标记语言描述或存储数据已成为当前最重要的数据表现和存储方式,如HTML、HTML5、可扩展超文本标记语言(extensibleHyperTextMarkupLanguage,XHTML)、可扩展标记语言(ExtensibleMarkupLanguage,XML)等,这类标记语言一个最主要的特点就是都使用一套标记标签(markuptag)组织或存储数据。以下本申请所述的标记文件就是指以标记标签组织数据的文件。参照图1,示出了本申请一种标记文件解析方法的流程示意图,具体如下步骤101,获取标记文件中的标签对象生成标签集合。标记文件就是待解析的以标记标签组织或存储数据的文件。根据数据存储和表现的需要,某一特定的标签在一个标记文件中可能会多次出现,如当一个网页中需要出现多个链接,则该网页对应的标记文件中用于标记链接的标签<a>〈/a>就会按一定格式多次出现<ahref=http://www.google,comname=“google”>这是一个链接</a><ahref=http://www.360.comname=“360”>这是一个链接</a>若需要对标签对象组织的数据进行解析时,就从该标记文件中查找标签对象生成标签集合。需要说明的是,一个标记文件通常是由各种不同的标签来组织相应的数据,例如〈lable〉、〈table〉、〈form〉、〈input〉等。所谓标签对象就是一个标签在标记文件中的对象实例,如上述标签<a>在一个网页中出现了2次,那么若对该网页获取标签<a>的标签对象就会得到标签<a>所对应的两个对象实例<ahref=http://www.ROORle.comname=“google”>这是一个链接</a><ahref=http://www.360.comname=“360”>这是一个链接</a>另外,本文所描述的从标记文件中获取标签对象通常也是指获取某一类或几类特定标签的标签对象,其具体获取哪类标签可由本领域技术人员在实施本申请时依据标记文件分析目的决定,本申请对此没有限制。优选的,所述获取标记文件中的标签对象是对标记文件进行全文查找获取某类标签的全部标签对象,以便避免遗漏,提高解析的准确性。步骤102,根据所述标签集合中标签对象的公共属性对所述标签对象进行分组。可根据不同标记文件的类型,或本次文件解析目的,选择标签对象的不同公共属性,并依据该公共属性对标记文件实施分组。所谓标签对象的公共属性即是指标签对象所共有的属性信息,例如标签对象所处的位置、标签类型、长度等。步骤103,获得一个或多个分组标签。根据上述步骤中的分组结果获得一个或多个分组标签。步骤104,依据预置的标记文件解析映射表,匹配所述一个或多个分组标签中的标签对象的属性,从相匹配的分组标签中获取标记文件解析用的数据。标记文件解析映射表预先存储了匹配分组标签所需的信息。本领域技术人员容易理解,具体的解析映射表内容可根据本次解析目的、标记文件类型等影响因素进行组织设定,如HTML、XML不同类型的标记文件,或同类型标记文件对不同标签进行解析时可对应不同的解析映射表。现有技术中当需要对一个标记文件中某标签的标签对象内容进行解析时,会直接查找到该标签,然后逐一分析。这种分析方法的最大问题就是待解析数据中的杂质太多,严重影响识别的成功率。因为同一类标签在一个标记文件中可能存在多种描述方式,如〈input〉标签,其可以位于〈form〉标签内,也可以位于〈form〉标签外,或者根本不使用〈form〉标签。基于这一情况,如果查找整个标记文件中的〈input〉标签,由于无法获知多个〈input〉标签之间的关系只能将所有〈input〉标签作为同一组标签进行分析,这样势必会带入很多不相关的内容导致杂质太多,而如果仅仅考虑〈form〉标签内的〈input〉又可能会因为找不到〈form〉标签而无法获得有效的〈input〉标签,造成识别成功率低下。针对上述问题,本申请提出对从标记文件中获取的标签集合,按标签集合中标签对象的公共属性对标签集合中的标签对象进行分组获得分组标签,之后再对所获得一个或多个分组标签进行解析获得对整个标记文件的解析结果。由于同一分组内标签对象都具有相同的公共属性,各标签对象相互之间也具备了关联性,便于实施进一步分析,而不像现有技术中各标签处于无序状态;同时,由于不用考虑不同标记文件中标签对象的不同表现形式,因而提高了文件解析的适用性和成功率。参照图2,示出了本申请一种标记文件解析方法的流程示意图,具体如下步骤201,获取标记文件中的全部标签对象生成标签集合。步骤202,对标签集合中的标签对象进行分组,具体包括将具有相同父节点的标签对象置为同一分组标签。本例中,具有相同的父节点是对标签集合中各标签对象进行分组所依据的共同公共属性。由于本次解析目的是希望对位置上有关联的标签进行分析,因此使用相同父节点作为分组依据。具体的,首先计算各标签对象的节点路径,然后将拥有相同父节点的标签对象设置于同一个分组标签内。步骤203,使用递归操作完成对相同父节点内各标签对象的再分组,具体包括判断当前分组结果中一个或多个分组标签,若当前分组标签包含两个或多个标签对象,且所述两个或多个标签对象不具有相同的父节点,则将当前分组标签内具有相同父节点的标签置于另一分组标签内;重复上述步骤直到当前分组标签不可再分组。用代码描述上述过程示例如下权利要求1.一种标记文件解析方法,其特征在于,包括获取标记文件中的标签对象,生成标签集合;根据所述标签集合中标签对象的公共属性,对所述标签对象进行分组,从所述分组的结果获得ー个或多个分组标签;依据预置的标记文件解析映射表,匹配所述ー个或多个分组标签中的标签对象的属性;从相匹配的分组标签中,获取标记文件解析用的数据。2.如权利要求I所述的方法,其特征在于,根据所述标签集合中标签对象的公共属性对所述标签对象进行分组,包括将标签集合中具有相同父节点的标签对象置于同一分组标签内。3.如权利要求2所述的方法,其特征在于,所述从所述分组的结果获得ー个或多个分组标签之后还包括分组标签再分组,包括判断当前分组结果中ー个或多个分组标签;若当前分组标签包含两个或多个标签对象,且所述两个或多个标签对象不具有相同的父节点,则将当前分组标签内具有相同父节点的标签对象置于另一分组标签内;重复上述步骤直到当前分组标签不可再分组。4.如权利要求I所述的方法,其特征在于,所述标记文件是超文本标记HTML文件。5.如权利要求I所述的方法,其特征在于,所述标签对象是〈input〉输入框;所述依据预置的标记文件解析映射表,匹配所述ー个或多个分组标签中的标签对象的属性还包括若当前分组标签中仅含有I个密码输入框,且位于所述密码输入框下级兄弟节点的标签对象不是文本输入框,则当前分组标签为登录表単。6.如权利要求5所述的方法,其特征在于,还包括若当前分组标签为登录表单,且当前分组标签内密码输入框存在多级父节点,且当前分组标签不可再分,且所述密码输入框的最近父节点内包括至少ー个文本输入框,则将所述密码输入框最近父节点内的标签对象置于新的分组标签内。7.如权利要求5所述的方法,其特征在于,所述依据预置的标记文件解析映射表,匹配所述ー个或多个分组标签中的标签对象的属性还包括若当前分组标签中仅含有I个密码输入框,且位于所述密码输入框下级兄弟节点的标签对象是文本输入框,则当前分组标签为注册表单。8.如权利要求7所述的方法,其特征在于,所述依据预置的标记文件解析映射表,匹配所述ー个或多个分组标签中的标签对象的属性还包括若当前分组标签中包含2个位置连续的且互为兄弟节点的密码输入框,则当前分组标签为注册表单。9.如权利要求8所述的方法,其特征在于,所述依据预置的标记文件解析映射表,匹配所述ー个或多个分组标签中的标签对象的属性还包括若当前分组标签中包含3个位置连续且互为兄弟节点的密码输入框,则当前分组标签为密码修改表単。10.ー种网页填充方法,其特征在于,包括标记文件解析;目标数据存储;目标数据填充;所述标记文件解析包括获取标记文件中的标签对象,生成标签集合;根据所述标签集合中标签对象的公共属性,对所述标签对象进行分组,从所述分组的结果获得ー个或多个分组标签;依据预置的标记文件解析映射表,匹配所述ー个或多个分组标签中的标签对象的属性;相匹配的分组标签为目标输入项;所述目标数据存储包括从所述目标输入项中获取目标数据并存储在配置信息中;所述目标数据填充包括从配置信息中获取目标数据并填充在所述标记文件对应的目标输入项中。11.一种标记文件解析装置,其特征在于,包括获取模块,用于获取标记文件中的标签对象;集合生成模块,用于将所述获取模块得到的标签对象生成标签集合;分组模块,用于根据所述标签集合中标签对象的公共属性对所述标签对象进行分组;分组标签获取模块,用于获取所述分组模块生成的ー个或多个分组标签标记文件解析映射表,用于预先存储标记文件的解析映射信息;解析模块,用于依据标记文件解析映射表,匹配所述分组标签获取模块所获取的ー个或多个分组标签中的标签对象的属性;从相匹配的分组标签中获取标记文件解析用的数据。12.如权利要求11所述的装置,其特征在于,所述分组模块还包括第一分组单元,用于将标签集合中具有相同父节点的标签对象置于同一分组标签内。13.如权利要求12所述的装置,其特征在于,所述分组模块还包括第二分组单元,用于判断若当前分组标签包含两个或多个标签对象,且所述两个或多个标签对象不具有相同的父节点,则将当前分组标签内具有相同父节点的标签对象置于另一分组标签内;第二分组单元重复执行操作直到当前分组标签不可再分组。14.如权利要求11所述的装置,其特征在于,所述标记文件是超文本标记HTML文件。15.如权利要求12所述的装置,其特征在于,所述获取模块所获取的标签对象是〈input〉输入框。16.如权利要求15所述的装置,其特征在于,所述解析模块还包括登录表单识别单元用于判断若当前分组标签中仅含有I个密码输入框,且位于所述密码输入框下级兄弟节点的标签对象不是文本输入框,则当前分组标签为登录表単。17.如权利要求15所述的装置,其特征在于,所述解析模块还包括第一注册表单识别单元,用于判断若当前分组标签中仅含有I个密码输入框,且位于所述密码输入框下级兄弟节点的标签对象是文本输入框,则当前分组标签为注册表単。18.如权利要求15所述的装置,其特征在于,所述解析模块还包括第二注册表单识别单元,用于判断若当前分组标签中包含2个位置连续的且互为兄弟节点的密码输入框,则当前分组标签为注册表単。19.如权利要求15所述的装置,其特征在于,所述解析模块还包括密码修改表单识别単元,用于判断若当前分组标签中包含3个位置连续且互为兄弟节点的密码输入框,则当前分组标签为密码修改表単。全文摘要本申请提供了一种标记文件解析方法和装置,用以解决现有技术中对标记文件解析成功率低的问题。本申请通过获取标记文件中的标签对象生成标签集合;根据所述标签集合中标签对象的公共属性对所述标签对象进行分组;从所述分组的结果获得一个或多个分组标签;依据预置的标记文件解析映射表,匹配所述一个或多个分组标签中的标签对象的属性;从相匹配的分组标签中获取标记文件解析用的数据。对标签对象按其公共属性进行分组,使得标记文件中原本无序的标签对象之间建立了关联,非常有利于做进一步的匹配分析,有效提高了标记文件的解析成功率。文档编号G06F17/30GK102651019SQ20121009131公开日2012年8月29日申请日期2012年3月30日优先权日2012年3月30日发明者万勇,任寰,李超,杭程申请人:奇智软件(北京)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1