背景技术
超文本标示语言(Hypertext Markup Language,HTML)是目前WWW上应用的文本标记语言。HTML通过一系列标记使Web浏览器能结构化显示Web页面。
例如,以下一段HTML文本信息,在IE浏览器中显示的效果如图1所示。
<TR bgColor=″#f2f8ff″><TD noWrap><a href=″/search.aspx?q=学习&p=Seed&b=0″>学习</a></TD><TD><Ahref=″http://www.cnplayer.com/upload/2006/2/13/200621323483592551238218.torrent″target=_blank>CPA2005学习资料-会计 经济法 税法ISO经典资料</A></TD><TD noWrap><a href=″http://bbs.fkee.com/″target=_blank>相关讨论</a></TD><TD><A href=″http://www.cnplayer.com/bt/study/210591.htm″target=_blank>查看</A></TD><TD align=″center″><b><font color=red>147</font></b></TD><TD align=″center″><b><font color=red>734</font></b></TD><TD align=″center″><font color=red>1354M</font></TD> |
在上述HTML文本中,<TR></TR>,<TD></TD>,<A></A>等符号,称为HTML标签。另外,这段HTML文本的特征是,<TR></TR>标签之间的信息,标示了图1表中的第二行;每一个<TD></TD>之间的信息标示了图1表中的一个字段(Field);图1中每一个字段显示的信息都被一个“><”包含。
这些特征是上面的HTML文本呈现的特征,同时它也是多数以Table形式显示的Web页面的特征,具有普遍性。在一些页面中,可能标签出现差异,但是都符合这个基本规律。
综上所述,HTML文本具备以下基本特征:
1、HTML文本用标签标示其显示的形式;
2、HTML文本在用标签标示Web信息时必须按照一定的语法规则;
3、Table形式显示的Web页面,每一个<TR></TR>之间包含的信息用于显示表的一行;
4、Table形式显示的Web页面,每一个<TD></TD>之间的信息用于显示表中一行内容的一个字段;
5、Table形式显示的Web页面,字段中显示的内容必然用一个“><”包含;
6、HTML标签大小写不敏感。
Web浏览器解析HTML标记,并根据标记指定的格式显示Web信息。HTML标签是一个字符集的超级,即一个关键字的集合,浏览器的不同版本支持不同版本的HTML。浏览器在解析HTML文本时,首要需要对HTML文本做语法解析,同时需要执行HTML中的动态内容,最后将格式化的Web信息显示给用户。
Web浏览器具有如下特点:
1、支持采用HTML书写的静态页面;
2、支持其他一些动态脚本语言,如JavaScript,动态HTML(DHTML)等;
3、支持Web的Post和Get方法;
4、支持动态Web技术,如ASP、JSP、JaveBeans等等;
5、对于HTML文本仅仅做语法解析,不做任何语义分析;
6、仅仅是一个Web页面的显示工具,不对Web信息提供任何分类和聚合操作。
实际应用中,用户可能需要提取Web页面中感兴趣的Web信息进行分类、聚合,现有技术中一种最常规的方法就是分析Web文件的内容,根据内容中的关键字分析其信息。常用的方法有关键字完全匹配法,关键词模糊匹配法,内容正则表达式法。
其中,关键字匹配法的基本思想是将需要匹配的关键字作为查询字符串,待处理的Web文件作为源字符串,使用字符串匹配的算法,对源Web文本进行分析。这种方法比较适合少量信息提取,但是对于海量的数据处理,该算法的时间复杂度高,可扩展性差。
关键字模糊匹配是对关键字匹配法的一种改进,该算法在时间复杂度上没有改进,仅仅算法的扩展性有一点改观。
内容正则式对于形形色色的Web信息并不能表现其优势。
以上三种方法一个共同的特点是针对Web信息的内容做解析,提取Web信息。都存在算法的时间复杂度高、扩展性差的问题。
发明内容
本发明提供一种提取Web页面中用户所需Web信息的方法,用以解决现有技术中由于采用针对Web信息的内容做解析来提取所需Web信息,存在时间复杂度高、扩展性差的问题。
本发明方法包括:
A、按照Web页面对应的HTML文本顺序,选取若干个HTML标签作为标签尺元素生成标签尺,存储到系统中;
B、系统按照所述标签尺中的HTML标签元素按序匹配所述HTML文本,根据匹配出的HTML标签分割Web信息,并存储分割后的Web信息块和包含该信息块的HTML标签在文本中的位置信息;
C、用户根据所需Web信息确定包含该Web信息的HTML标签在HTML文本中的位置,并通知系统;系统查找并提取存储的分割后的对应Web信息块。
根据本发明的上述方法,所述标签尺所包含的标签元素为采用Table形式显示的Web页面中用于显示出表的一行的一对<TR></TR>之间所包含的全部HTML标签。
根据本发明的上述方法,所述步骤B包括:
系统按照所述标签尺包含的标签元素按序匹配HTML文本中对应标签;若匹配成功,继续匹配下一个标签,直到所述标签尺的标签元素全部匹配成功;在匹配过程中,根据匹配出的HTML标签分割Web信息;一并存储分割后的Web信息块和包含该信息块的HTML标签在文本中的位置信息;
若标签匹配失败,则将该匹配失败的HTML标签所在文本处作为断点,从该断点处重新开始按照所述标签尺包含的标签元素按序进行下一轮匹配。
根据本发明的上述方法,判断HTML标签是否匹配成功的具体方法为:
获取所述标签尺中的第N个标签元素,N为标签尺所包含的标签元素序号,在HTML文本中查找相同的HTML标签,若找到,将该第N个HTML标签在文本中的位置记为第N位置;
在所述第N位置之后的HTML文本中查找所述标签尺中的第N+1个标签,若找到,将该第N+1个HTML标签在文本中的位置记为第N+1位置;如果所述第N位置和第N+1位置之间的信息不合有所述标签尺中的任何标签元素,则判断第N+1个HTML标签匹配成功。
根据本发明的上述方法,采用堆栈方式存储所述分割后的Web信息块和包含该信息块的HTML标签在HTML文本中的位置信息;
若在本轮匹配过程中出现标签匹配失败,则弹出存入所述堆栈中的全部信息,以便存储下一轮匹配过程中分割后的Web信息块和包含该信息块的HTML标签在文本中的位置信息。
根据本发明的上述方法,定义所述标签尺为包含若干个所述标签元素的标签列表向量。
根据本发明的上述方法,所述系统将HTML标签分割后的每一个Web信息块格式化为一个对应的字段信息对象。
根据本发明的上述方法,用户根据所需Web信息设定一个信息提取矩阵,在该信息提取矩阵中指明包含所需Web信息的HTML标签在HTML文本中的位置;
所述系统根据用户设定的信息提取矩阵,利用向量乘法规则,从格式化后的所述字段信息对象中提取用户所需Web信息。
所述信息提取矩阵包含三列;
一列数据用以指明需要提取的Web信息位于一个Table行的第几个字段中;
另一列数字对应指明包含所述Web信息的HTML标签为HTML文本中对应<TD></TD>中的第几个信息域标签;
再一列数字用以指明提取出的每一个Web信息字段在数据库中的存储位置。
本发明有益效果如下:
本发明在Web页面对应的HTML文本中按序选取若干个HTML标签作为标签尺元素生成标签尺,存储到系统中;由系统按照标签尺中的HTML标签元素按序匹配HTML文本,采用匹配出的HTML标签分割Web信息,并存储分割后的Web信息块和包含该信息块的HTML标签在文本中的位置信息;由用户根据所需Web信息确定包含该Web信息字符串的HTML标签在HTML文本中的位置,并通知系统;系统查找并提取存储的分割后的对应Web信息块。因此,本发明使用HTML标签生成标签尺,并采用标签尺来分割HTML文本,使信息分割更加准确高效。
采用本发明,用户可以根据所需Web信息设定一个信息提取矩阵,在该信息提取矩阵中指明包含所需Web信息的HTML标签在HTML文本中的位置;系统根据用户设定的信息提取矩阵,利用向量乘法规则,从格式化后的Web信息对象中提取用户所需Web信息,使信息提取算法更加灵活,高效。
具体实施方式
本发明提出一种基于HTML语法标准的信息提取方法,将网页信息分割和信息提取算法与具体的信息内容耦合,使信息分割和提取算法更加通用灵活。
本发明提供的在Web页面中提取用户所需Web信息的方法,如图2所示,包括:
步骤S11、按照Web页面对应的HTML文本顺序,选取若干个HTML标签作为标签尺元素生成标签尺,存储到系统中;
步骤S12、系统按照标签尺中的HTML标签元素按序匹配HTML文本,根据匹配出的HTML标签分割Web信息,并存储分割后的Web信息块和包含该信息块的HTML标签在文本中的位置信息;
步骤S13、由用户根据所需Web信息确定包含该Web信息的HTML标签在HTML文本中的位置,并通知系统;系统查找并提取存储的分割后的对应Web信息块。
本发明对于以Table方式呈现的网页结构尤其适用,本发明通过改变标签尺中所包含的标签元素来灵活调整Web信息分割的尺度和标准,高效快速地提取网页中的相关信息。
本发明在Web信息分类和聚合中,对基于HTML标签标识的Web信息进行规格化,通过用户设定的信息提取矩阵,利用向量乘法的规则,提取网页中有用的信息。
下面用具体实施例对本发明方法加以详细描述。
基于HTML标签和向量计算的Web信息提取方法为:
将Web页面对应的HTML文本以及用户指定的标签尺和信息提取矩阵作为输入,提取出Web页面中感兴趣的信息。
例如:以上述背景技术中给出的HTML文本作为信息源,标签尺定义为:
<TR|<TD|</TD>|<TD|</TD>|<TD|</TD>|<TD|</TD>|<TD|</TD>|<TD|</TD>|<TD|</TD>|<TD|</TD>|/TR>|;
标签尺以“|”分割,包括“<”。
将标签尺作为分割HTML文本的HTML标签向量,在算法中可描述为:
vector<string>FLAGLIST
FLAGLIST中存储的内容根据实际的Web信息格式设定。在上述例子中,可以定义标签尺如下:
FLAGLIST fl,fl实例化以后为:
fl[0]=“<TR”;
fl[1]=“<TD”;
fl[2]=“</TD>”;
......
fl[17]=“/TR>”。
根据标签尺生成标签集合:
set<string>FLAGSET
标签集合用于在按照标签尺对HTML文本进行匹配时,判断某一个HTML标签的匹配是否为有效匹配。
在上例中,可以定义标签集合如下:
FLAGSET fs,fs实例化以后为:
fs[0]=“<TR”;
fs[1]=“<TD”;
fs[2]=“</TD>”;
fs[3]=“/TR>”。
该FLAGSET共含有四个元素。
下面具体描述如何根据设定的标签尺来分割Web信息。
系统按照标签尺包含的标签元素按序匹配HTML文本中对应标签;若匹配成功,继续匹配下一个标签,直到标签尺的标签元素全部匹配成功;在匹配过程中,采用匹配出的HTML标签分割Web信息;并存储分割后的Web信息块和包含该信息块的对应HTML标签在文本中的位置信息;
若标签匹配失败,则将该匹配失败的HTML标签所在文本处作为断点,从该断点处重新开始按照标签尺包含的标签元素按序进行下一轮匹配。
以采用堆栈方式存储分割后的Web信息块和包含该信息块的HTML标签在HTML文本中的位置信息为例,具体匹配存储过程为:
起始,在HTML文本中查找FLAGLIST中的第一个标签元素,如果找到,则将该标签以及该标签在HTML文本中出现的位置(记其位置为pos1)压入堆栈,然后在pos1之后的HTML文本中查找标签尺中的第二个标签,如果找到(记其位置为pos2),判断pos1和pos2之间的信息是否含有标签尺中的任何标签元素,如果pos1和pos2之间的信息不包含标签尺中的任何标签元素,则认为第二个标签匹配成功;按照上述方法,继续进行FLAGLIST中第三个标签元素、第四个标签元素直到最后一个标签元素的匹配。
上述判断HTML标签是否匹配成功的方法,可以概括为:
获取标签尺中的第N个标签元素(N为标签尺所包含的标签元素的序号),在HTML文本中查找相同的HTML标签,若找到,将该第N个HTML标签在文本中的位置记为第N位置;在第N位置之后的HTML文本中查找所述标签尺中的第N+1个标签,若找到,将该第N+1个HTML标签在文本中的位置记为第N+1位置;如果第N位置和第N+1位置之间的所有标签在标签集合中不存在,则判断第N+1个HTML标签匹配成功。否则判断为匹配失败。
若在匹配过程中出现匹配失败;则将堆栈内存储的全部信息弹(pop)出来,下一轮标签尺匹配从该匹配失败的HTML标签所在位置处开始,重新按照标签尺中的标签元素顺序进行匹配。即下一次信息分割将从FLAGLIST的第一个标签元素开始。
当堆栈内存储的信息个数为FLAGLIST的长度时,认为完成了一次信息分割,依次pop出堆栈中的全部信息保存到预先设置的数据库中。
通过以上步骤,获得了分割后的每个Web信息块。
可以将每一小块Web信息格式化为一个对应的字段信息(FieldsInfo)对象。
用户根据所需Web信息设定一个信息提取矩阵,在该信息提取矩阵中指明包含所需Web信息的HTML标签在HTML文本中的位置;
系统根据用户设定的信息提取矩阵,利用向量乘法规则,从格式化后的字段信息对象中提取用户所需Web信息。
仍以上述HTML文本及设定的标签尺为例,假设格式化后的FieldInfo对象定义为fi,其元素分别为:
fi[0]={“/search.aspx?q=学习&p=Seed&b=0”,“学习”};
fi[1]={“http://www.cnplayer.com/upload/2006/2/13/200621323483592551238218.torrent”,“CPA2005学习资料-会计经济法税法ISO经典资料”};
fi[2]={“http://bbs.fkee.com/”,“相关讨论”};
fi[3]={“http://www.cnplayer.com/bt/study/210591.htm”,“查看”};
fi[4]={“147”};
fi[5]={“734”};
fi[6]={“1354M”};
fi[7]={“2006-2-13 23:48”}。
假设用户设定的信息提取矩阵如下:
2 2 1
1 2 2
7 2 3
2 1 4
2 1 5
2 2 6
上述信息提取矩阵包含三列;其中从左到右第一列数据用以指明需要提取的Web信息位于一个Table行的第几个字段。上述信息提取矩阵第一列从上到下的数字分别为:2,1,7,2,2,2;表示用户需要按序提出一个Table行中的第2个字段,第1个字段,第7个字段,第2个字段,第2个字段,第2个字段中的信息。
上述信息提取矩阵从左到右第二列数字对应指明包含对应Web信息的HTML标签为HTML文本中对应<TD></TD>中的第几个信息域标签。上述信息提取矩阵第二列从上到下的数字分别为:2,2,2,1,1,2;结合信息提取矩阵中的第1列数字所表达的含义,进一步确定需要提取的Web信息的具体位置,分别为:
提取HTML文本中描述第2字段的对应<TD></TD>中第2个“><”包含的Web信息;以上述HTML文本为例,具体信息为:“CPA2005学习资料-会计经济法税法ISO经典资料”;
提取HTML文本中描述第1字段的对应<TD></TD>中第2个“><”包含的Web信息;以上述HTML文本为例,具体信息为:“学习”;
提取HTML文本中描述第7字段的对应<TD></TD>中第2个“><”包含的Web信息;以上述HTML文本为例,具体信息为:“1354M”;
提取HTML文本中描述第2字段的对应<TD></TD>中第1个“><”包含的Web信息;以上述HTML文本为例具体信息为:“http://www.cnplayer.com/upload/2006/2/13/200621323483592551238218.torrent”;
提取HTML文本中描述第2字段的对应<TD></TD>中第1个“><”包含的Web信息;以上述HTML文本为例具体信息为:“http://www.cnplayer.com/upload/2006/2/13/200621323483592551238218.torrent”;
提取HTML文本中描述第2字段的对应<TD></TD>中第2个“><”包含的Web信息;以上述HTML文本为例,具体信息为:“CPA2005学习资料-会计经济法税法ISO经典资料”。
上述信息提取矩阵从左到右第三列指明提取后的Web信息在数据库中的存储顺序,上述信息提取矩阵第三列从上到下的数字分别为:1,2,3,4,5,6;表示将提取的对应Web信息按序存储,形成数据库中的一条记录。
如果采取向量计算,则上述信息提取矩阵可定义为typedefvector<vector<int>>KeyWordMapInfo。例如:定义上述例子中的信息提取矩阵为KeyWordMapInfo keymap,其中的各个元素对应为:
keymap[0][0]=2;keymap[0][1]=2;keymap[0][2]=1;
keymap[1][0]=1;keymap[1][1]=2;keymap[1][2]=2;
keymap[2][0]=7;keymap[2][1]=2;keymap[2][2]=3;
keymap[3][0]=2;keymap[3][1]=1;keymap[3][2]=4;
keymap[4][0]=2;keymap[4][1]=1;keymap[4][2]=5;
keymap[5][0]=2;keymap[5][1]=2;keymap[5][2]=6。
将提取后的信息定义为一个字符串(string)向量,为:typedefvector<string>VECRESULT;定义vr是实际的结果向量对象,则通过向量计算以后的vr的各个元素为:
vr[0]=“CPA2005学习资料-会计经济法税法ISO经典资料”;
vr[1]=“学习”;
vr[2]=“1354M”;
vr[3]=“http://www.cnplayer.com/upload/2006/2/13/200621323483592551238218.torrent”;
vr[4]=“http://www.cnplayer.com/upload/2006/2/13/200621323483592551238218.torrent”;
vr[5]=“CPA2005学习资料-会计经济法税法ISO经典资料”。
综上所述,本发明在Web页面对应的HTML文本中按序选取若干个HTML标签作为标签尺元素生成标签尺,存储到系统中;由系统按照标签尺中的HTML标签元素按序匹配HTML文本,根据匹配出的HTML标签分割Web信息,并存储分割后的Web信息块和包含该信息块的HTML标签在文本中的位置信息;由用户根据所需Web信息确定包含该Web信息的HTML标签在HTML文本中的位置,并通知系统;系统查找并提取存储的分割后的对应Web信息块。因此,本发明使用HTML标签生成标签尺,用标签尺来分割HTML文本,使信息分割更加准确高效。
采用本发明,用户可以根据所需Web信息设定一个信息提取矩阵,在该信息提取矩阵中指明包含所需Web信息字符串的HTML标签在HTML文本中的位置;系统根据用户设定的信息提取矩阵,利用向量乘法规则,从格式化后的Web信息对象中提取用户所需Web信息,使信息提取算法更加灵活,高效。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。