基于url的正则表达式的生成方法和装置的制作方法

文档序号:6467153阅读:95来源:国知局

专利名称::基于url的正则表达式的生成方法和装置的制作方法
技术领域
:本发明涉及一种正则表达式的生成方法和装置。
背景技术
:随着网络的迅速发展,万维网成为大量信息的载体,为有效地提取并利用这些信息,搜索引擎(SearchEngine)作为一个辅助人们检索信息的工具,成为用户访问万维网的入口和指南。搜索引擎作为一个辅助检索信息的工具给人们在网络上检索信息提供了很大的帮助。目前的搜索引擎有很多,如通用收索引擎、垂直收索引擎等。通用搜索引擎,例如百度、Google等给人们在互联网上搜索信息提供了很多便利,但也存在一定的局限性,例如通用搜索引擎所返回的结果包含大量用户不关心的页面,另外通用搜索引擎的目标是尽可能大的网络覆盖率,有限的搜索引擎服务器资源与无限的网络数据资源之间的矛盾将进一步加深。因此,人们普遍应用垂直收索引擎来收索需要的信息。因为垂直收索引擎只搜索某一个行业或者某一个主题的信息,所以垂直搜索引擎只需要索引一小部分互联网数据,用很少的服务器资源覆盖互联网上某一特定行业、主题的绝大部分数据。垂直搜索引擎的技术核心是设计一个高效的聚焦爬虫(一个自动提取网页的程序)。聚焦爬虫有两个核心问题要解决一个是选择策略问题,另一个是重访策略问题。选择策略涉及信息的选择,例如表明优先抓取哪些页面,或者只抓取哪些页面,不抓取哪些页面;重访策略涉及信息的重新访问,例如表明什么时候重新抓取页面,看看页面是否发生了变化。在垂直搜索引擎的搜索操作中,必须提供要查找信息的确切文字,在这种搜索和替换操作中,对于搜索静态文本信息是方便和迅速的。但是,由于这种方式缺乏灵活性,因此在搜索动态文本信息时会遇到很大的困难,甚至无法完成搜索任务。在现有的爬虫技术中,通常会使用一种通过URL(统一资源定位器)规则来进行页面抓取的技术,而这种技术的核心是URL正则表达式(一种对文字进行模糊匹配的语言)的学习机制。从一个网站发现与收索内容相关的页面,又从这些页面的URL中概括出正则表达式的一个简单的方法是人工观察法。人为的找出与收索内容相关的页面,通过人工对比页面的URL发现这些页面URL的规律,从而得到页面URL规律的正则表达式,然后用这些正则表达式指导聚焦导爬虫抓取页面。在竞争异常激烈的今天,网站经常升级更新,新的网站不断在增加,URL的格式也经常发生变动,而且网站的数量巨大,用上述人为的方法通过统计和寻找规律得到的正则表达式的错误率很高、误差比较大。
发明内容本发明要解决的问题在于,提供一种基于URL的正则表达式的生成方法,从而实现快速准确的寻找出URL的正则表达式用以解决在互联网上搜索信息效率低和不准确的问题。本发明实施例提供的基于URL的正则表达式的生成方法,包括将输入的URL列表按照预定的划分规则划分成多个URL子集;将所述URL子集按照预定的聚类规则聚合成多个URL类;抽取所述聚合成的URL类,生成正则表达式。所述划分URL子集的规则包括将具有相同站点参数的URL划分到同一个URL子集;或者,将站点参数相同并且目录层也相同的URL划分到同一个子集;或者,将站点参数相同并且目录层和查询参数也相同的URL划分到同一个子集。按照下述步骤将所述URL子集聚合成多个URL类设置距离阈值h;对输入的URL列表按照距离阈值h进行静态聚合;判断静态聚合的结果是否符合聚类规则,如果符合,获得聚合后的URL类,否则,设置新的距离阈值h,按照新的距离阈值h继续进行静态聚合,并判断是否符合聚类规则。所述静态聚合的过程包括从所述URL子集中读取没有被聚类的URL作为当前待聚类的URL;判断已经被聚类的URL集合中是否有与当前待聚类的URL匹配的类别,如果匹配,则将所述当前待聚类的URL加入到匹配的URL类中,否则,依据所述当前待聚类的URL建立一个新的URL类;。所述生成正则表达式的步骤包括从聚合后的URL类中提取相同的站点参数加入正则表达式的站点参数段;将聚合后的URL类中的每个URL的目录分解成若干个子目录、查询参数分解成若干个键值对;从聚合后的URL类中提取子目录的内容,判断聚合后的URL类中的每个URL的子目录内容是否完全相同,若每个子目录的内容完全相同,将该子目录内容加入到正则表达式的目录段对应的子目录域,否则,将"*"加入到正则表达式的目录段对应的子目录域;从聚合后的URL类中提取键值对内容,判断聚合后的URL类中的每个URL的键值对内容是否完全相同,若键值对内容完全相同,将该键值对的内容加入到正则表达式的键值对段,否则,将"*"加入到正则表达式的键值对段。本发明实施例提供基于URL的正则表达式的生成装置,包括划分单元,读取输入的URL列表,按照预定的划分规则划分成多个URL子集;聚合单元,用于将所述URL子集按照预定的聚类规则聚合成多个URL类;表达式生成单元,从聚合单元聚合成的多个URL类中抽取所述聚合成的URL类,生成正则表达式。所述划分单元包括第一划分子单元,将具有相同站点参数的URL划分到同一个URL子集;第二划分子单元,将站点参数相同并且目录层也相同的URL划分到同一个子集;或者,第三划分子单元,将站点参数相同并且目录层和查询参数也相同的URL划分到同一个子集;5选择子单元,用于从第一、第二和第三划分单元中选择其中的一个单元执行划分操作。所述聚合单元包括类存储子单元,用于存储符合聚类规则的URL类;设置子单元,用于设置距离阈值h;静态聚合子单元,用于将选择子单元选择的划分子单元的输出结果按照距离阈值h进行静态聚合;第一条件子单元,判断静态聚合的结果是否符合聚类规则,如果符合,获得聚合后的URL类存入到类存储子单元,否则,设置新的距离阈值h,指示静态聚合子单元按照新的距离阈值h继续进行静态聚合,并继续判断是否符合聚类规则。所述静态聚合单元包括类操作子单元,用于生成URL类;URL读取子单元,用于从所述URL子集中读取没有被聚类的URL作为当前待聚类的URL;第二条件子单元,判断已经被聚类的URL集合中是否有与当前待聚类的URL匹配的类别,如果匹配,则指示类操作子单元将所述当前待聚类的URL加入到匹配的URL类中,否则,指示类操作子单元依据所述当前待聚类的URL建立一个新的URL类。所述表达式生成单元包括参数分解子单元,用于将聚合后的URL类中的每个URL的目录分解成若干个子目录、查询参数分解成若干个键值对;生成子单元,用于从聚合后的URL类中提取相同的站点参数加入正则表达式的站点参数段;以及从聚合后的URL类中提取子目录的内容,判断聚合后的URL类中的每个URL的子目录内容是否完全相同,若每个子目录的内容完全相同,将该子目录内容加入到正则表达式的目录段对应的子目录域,否则,将"*"加入到正则表达式的目录段对应的子目录域;从聚合后的URL类中提取键值对内容,判断聚合后的URL类中的每个URL的键值对内容是否完全相同,若键值对内容完全相同,将该键值对的内容加入到正则表达式的键值对段,否则,将"*"加入到正则表达式的键值对段。采用本发明提供的基于URL的正则表达式的生成方法或装置,能够通过将输入的URL列表按照预定的划分规则划分成多个URL子集,由于可以根据聚类要求的不同,选择不同的划分方式,这样能够根据生成表达式的用途或要求,聚合成不同的URL类,同时,所述方法生成的正则表达式方法便于通过计算机来完成,能够实现快速生成正则表达式的目的。另外,采用本发明实施例提供的方案,由于可以按照不同的划分规则划分URL,以及通过预定的聚类规则生成的正则表达式,能够实现准确地生成正则表达式,从而解决在互联网上搜索信息效率低和不准确的问题。本发明的其它优点在后续的文字中有详尽的叙述。图1是本发明所述方法提供的生成URL正则表达式实施例流程图2是图1实施例采用的URL按站点参数(host)部分划分流程图;图3是图1实施例采用的动态聚合算法流程图;图4图3流程中采用的静态聚合算法流程图;图5是图1实施例采用的抽取正则表达式的流程图;图6是本发明所述装置提供的生成URL正则表达式的实施例框图;图7是图6所示实施例采用的划分单元的实施例框图;图8是图6所示实施例采用的聚合单元的实施例框图;图9是图8所示实施例采用的静态聚合单元的实施例框图;图10是图6所示实施例采用的表达式生成单元的实施例框图。具体实施例方式在典型的搜索和替换操作中,必须提供要查找的确切文字,在这种搜索和替换操作中,对于搜索静态文本信息是方便和迅速的。但是,由于这种方式缺乏灵活性,因此在搜索动态文本信息时会遇到很大的困难,甚至无法完成搜索任务。正则表达式(regulare邓ression)就是用一个"字符串"来描述一个特征,然后去验证另一个"字符串"是否符合这个特征。比如,表达式"ab圹,描述的是一个字符串的特征,该特征由"一个'a'和任意个'b'"组成,那么,如果待检测字符串是'ab'、'abb'或'abbbbbbbbbb',则这些字符串都符合这个特征。所以,正则表达式可以用来(l)验证字符串是否符合指定特征,比如验证是否是合法的邮件地址;(2)用来查找字符串,从较长的文本中查找符合指定特征的字符串,比查找固定字符串更加灵活方便;(3)易于实现字符串的替换,比普通的字符串替换操作更方便。在互联网上的Web页面中查找需要的页面非常困难,因为Web页面以及页面内容具有动态性、无序和数量巨大的特性,这些Web页面通常用URL来标识。一个具体的URL通常具有以下三个部分(去掉http协议部分)站点参数(host)部分,目录层(path)部分,查询参数(query)部分。其中目录层(path)若干个由子目录组成,查询参数(query)由若干个键值对组成。其中的host部分用于表示页面来源于位于不同地址的站点或服务器,这说明页面之间可能存在巨大差异;path部分用于表示页面内容来源于一个站点或服务器的不同的逻辑或物理存储位置,即表示页面具有不同的内容;query部分用于表示页面的细节内容也具有差异的特性。但是,页面以及页面内容通常也具有某种共性,例如同一个页面模板产生的页面通常属于同一个类别,并且同一个页面模板产生的页面的URL非常相似。因此,尽管互联网上的Web页面以及一个具体页面的内容具有动态特性,仍然可以用一个(或者若干个)正则表达式通过URL来概括页面具有的特征,或者通过通配符来概括页面内容具有的特征,以便在动态存在页面集合中快速查找具有某种特征的页面,或者在动态的信息集合中快速搜索具有某种特征的动态文本信息。例如一个典型的URL:http://www.china_pub.com/member/buybook/view.asp7add=1&tid=203839,其站点参数host为www.china-pub.com;目录层path为/member/buybook/view.asp,组成该目录层(path)的子目录为member,buybook,view,asp;查询参数query为add=1&tid=203839,组成该查询参数query的键值对为(add,1)和(tid,203839)。用Java表示的URL数据结构如下所示publicclassURLt潔t{定义URL类;privateStringhost;定义字符串host变量;privateString[]path;定义字符串path变量;privateArrayList<Pair<String,String>>query;定义query键值对数组;在上述典型的URL中,host为www.china-pub.com,由于互联网上站点数量众多和分布的广泛性,在数量居多的网页中站点参数为www.china-pub.com的概率极低;同时,对于来自同一个站点www.china-pub.com的网页,其host部分又具有相同的特性。本发明实施例提供了一种基于URL的正则表达式生成方法,参考图1。图l所示实施例包括三个步骤,其中步骤IOI,将输入的URL列表按照预定的划分规则划分成多个URL子集。具体的划分规则根据不同的需求可以有多种,例如,将具有相同站点参数的URL划分到同一个URL子集;或者,将站点参数相同并且目录层也相同的URL划分到同一个子集;或者,将站点参数相同并且目录层和查询参数也相同的URL划分到同一个子集。在本实施例中,采用将具有相同站点参数的URL划分到同一个URL子集的规则,因此本实施例的所述划分URL子集的步骤包括下述内容,参考图2:首先在步骤201,建立一个空表m即,所述m即有两个字段key和value,其中字段key用于存储站点参数,字段value用于存储URL列表;在步骤201,还要输入URL集合,该集合中包括待划分的URL;然后在步骤202,判断输入的URL集合中是否含有URL,如果没有URL,说明输入的URL集合为空或者其中的URL已经被处理完毕,此时在步骤203结束划分;如果输入的URL集合中有URL,说明所述集合中有URL等待处理,此时在步骤204读取一条URL,再在步骤205,抽取该URL的站点参数作为URL划分的基础;在步骤206,将步骤205抽取的站点参数与字段key中已经存储的站点参数比较,如果判断有所述抽取的站点参数,说明所述输入的URL的站点参数在字段key中已经存在,则在步骤208将所述输入的URL添加到与该站点参数对应的URL列表中,如果判断没有所述抽取的站点参数,说明所述输入的URL的站点参数在字段key中不存在,则在步骤207,将该站点参数添加到字段key中,然后在步骤208,将所述输入的URL添加到与该站点参数对应的URL列表中,然后转步骤202继续。下面举例说明图2所述划分URL子集的过程,该过程采用将具有相同站点参数的URL划分到同一个URL子集的规则对输入的URL集合进行划分。假设网络爬虫抓取的URL集合如下述列表所示,该表具有5条记录1、http2、http3、http4、http5、http/news.qq.com/a/20080925/001586.htm;/news.qq.com/a/20080925/000249.htm;/news.163.com/08/0925/08/4MM2GG2H0001124.html;/news.163.com/08/0925/06/4MLQQ8LI0001124J.html;/news.qq.com/a/20080924/000793.htm。按照图2的指示,建立一个表,表中有两个字段key和value,其中字段key为站点8参数值,字段value为URL值。初始化,将该表设为空,在表中建立第一个记录作为当前记录,输入URL列表的第一个URL:http:〃news.qq.com/a/20080925/001586.htm,从中抽取站点参数news.qq.com,将该参数添加到该表当前记录的字段key,将news.qq.com对应的URL添加到当前记录的字段value。在表中建立第二个记录作为当前记录,输入第二个URL:http:〃news.qq.com/a/20080925/000249.htm,从中抽取站点参数news.qq.com,因为表中已经有记录的key字段包含news.qq.com,所以只将htto:〃news.aa.com/a/20080925/000249,htm添加到当前记录的字段value。在表中建立第三个记录作为当前记录,输入第三个URL:http:〃news.163.com/08/0925/08/4MM2GG2H0001124J.html,从中抽取站点参数news.163.com,因为表中没有任何记录的字段key包含news.163.com,所以将news.163.com加入到当前记录的字段key中,将http:〃news.163.com/08/0925/08/4MM2GG2H0001124J.html加入到当前记录的字段value。对于输入的http:〃news.163.com/08/0925/06/4MLQQ8LI0001124J.html和http:〃news.qq.com/a/20080924/000793.htm等也同样按照以上URL的划分方式进行划分。最后将输入的5个URL划分为2个URL子集。具体的划分过程参考下表<table>tableseeoriginaldocumentpage9</column></row><table><table>tableseeoriginaldocumentpage10</column></row><table>表中获取第五个URL栏的内容为划分的结果。如上所述,划分是按照将具有相同站点参数的URL划分到同一个URL子集的规则进行的划分。它输入是一个URL集合,输出是几个URL子集。S卩,基于URL的站点参数,将站点参数相同的URL归为同一子集,这样整个URL集合就分成多个子集,每个子集内URL的站点参数相同。需要说明的是,由于URL子集的划分还有很多的划分方式,并且根据不同的需求,得到的划分结果也不同。因此,上面所用的划分方式实际中可能还存在其它划分方式,例如在本发明的其它实施例中,还可以采用将站点参数相同并且目录层也相同的URL划分到同一个子集;或者,将站点参数相同并且目录层和查询参数也相同的URL划分到同一个子集的划分规则进行划分,例如,基于URL的站点参数和URL目录层数的递进关系,将站点参数相同并且目录层数也相同的URL归为同一子集,这样整个URL集合就分成多个子集,每个子集内URL的站点参数相同并且目录层数也相同。再例如,基于URL的站点参数、URL的目录层数和URL的查询参数三者之间的关系,将站点参数相同并且目录层数和查询参数也相同的URL归为同一子集,这样整个URL集合就分成几个子集,每个子集内URL的站点参数相同并且目录层数和查询参数也相同。划分主要是为了聚类的方便,因为太多的URL放在一起聚类需要大量的处理时间,严重影响搜索的速度和准确性。图1所述的步骤102,将所述URL子集按照预定的聚类规则聚合成多个URL类具体的聚合过程参考图3。在步骤301,设置距离阈值h=1;步骤302,对输入的列表按照距离阈值进行静态聚合;步骤303,判断静态聚合的结果是否符合聚类规则;步骤305,如果符合聚类规则,获得聚合后的URL类;步骤304,如果不符合聚类规则,设置距离阈值为h+l;转到步骤302,继续进行静态聚合。步骤301所述的阈值h的值为一个常数,实际中也可以是0、2、3等,本实施例中的距离阈值h=l,即从1开始聚合的过程,直到符合聚类规则。步骤302中所述的静态聚合具体实施方法参考图4:在步骤401,执行初始化操作,建立URL类列表,输入一个已经划分为URL子集的URL列表,从划分完毕的URL子集中读取没有被聚类的URL作为当前待聚类的URL,在步骤402,判断是否有待聚类的URL,如果没有待聚类的URL,则在步骤403结束聚合操作;如果有待聚类的URL,则在步骤404,读取一条待聚类的URL;然后在步骤405,判断已经被聚类的URL集合中是否有与当前待聚类的URL匹配的类别,如果有与当前待聚类的URL匹配的类别,在步骤406,将所述当前待聚类的URL加入到匹配的URL类中,然后转到步骤402;如果没有与当前待聚类的URL匹配的类别,则在步骤407,依据所述当前待聚类的URL建立一个新的URL类,然后转到步骤402。步骤405中所述匹配,指当前已经读取的URL和URL类列表中所有URL的距离都小于或等于距离阈值h。这样经过聚合后,在URL类列表中就存储了一些URL类,同一个类内的所有URL相互之间的距离都不大于距离阈值h,所以同一个类内的URL具有一定的相似性。步骤303所述的聚类规则要满足下面两个条件1.m<=sqrt(n),其中sqrt为开平方;2.m个URL类中最大的mXc个URL类包含的URL总数〉二nXq。该条件保证至少存在一个URL类能包含较多的URL数量,使该URL类中生成出来的正则表达式能覆盖网站中较多的页面,保证URL正则表达式的准确性。其中,m为静态聚合产生的聚合结果中的URL类的个数,n为URL总数,c,q为介于0和1之间的小数。c越大则聚合出来的URL类越多,每个URL类包含的URL数越少;q越大则聚合出来的URL类越少,每个URL类包含的URL数越多。c和q的值的确定是根据网站中蕴含网络爬虫需要抓取的信息量大小进行设定。按照上述聚合方法,聚合成一个理想的类。聚类是生成正则表达式中重要的环节。按照上述聚类方法,从聚合好的类中生成正则表达式。图1所示步骤103,抽取所述聚合成的URL类,生成正则表达式。具体过程参考图5。首先在步骤501,从聚合后的URL类中提取相同的站点参数加入正则表达式的站点参数段;然后在步骤502,将聚合后的URL类中的每个URL的目录分解成若干个子目录、查询参数分解成若干个键值对;在步骤503,从聚合后的URL类中提取子目录的内容;在步骤504,判断聚合后的URL类中的每个URL的子目录内容是否完全相同,如果判断聚合后的URL类中的每个URL的子目录内容完全相同,在步骤506,将该子目录内容加入到正则表达式的目录段对应的子目录域;如果判断聚合后的URL类中的每个URL的子目录内容不完全相同,则在步骤505,将"*"加入到正则表达式的目录段对应的子目录域;在步骤507,从聚合后的URL类中提取键值对内容;在步骤508,判断聚合后的URL类中的每个URL的键值对内容是否完全相同;如果聚合后的URL类中的每个URL的键值对内容完全相同,在步骤510,将该键值对内容加入到正则表达式的键值对段对应的键值对域,如果聚合后的URL类中的每个URL的键值对内容不完全相同,在步骤509,将"f加入到正则表达式的键值对段对应的键值对域;在步骤511,生成正则表达式。为了更好地理解步骤511,以下通过举例对正则表达式进行进一步说明。假设要查找hi,则可以使用正则表达式hi。这个正则表达式可以精确匹配这样的字符串由两个字符组成,前一个字符是h,后一个是i。在实际中,正则表达式是可以忽略大小写的。如果很多单词里都包含hi这两个连续的字符,比如him,history,high等等。用hi来查找的话,这此单词里面的hi也会被找出来。如果要精确地查找hi这个单词的话,则应该使用\bhi\b。其中Ab是正则表达式的一个元字符,它代表着单词的开头或结尾,也就是单词的分界处。虽然通常英文的单词是由空格或标点符号或换行来分隔的,但是V3并不匹配这些单词分隔符中的任何一个,它只匹配一个位置。假如要找的是hi后面不远处跟着一个Lucy,则应该用\bhi\b.*\bLucy\b。其中,.是另一个元字符,匹配除了换行符以外的任意字符。*同样是元字符,它代表的是数量,即指定*前边的内容可以连续重复出现任意次以使整个表达式得到匹配。现在\bhi\b.*\bLucy\b表示为先是一个单词hi,然后是任意个任意字符(但不能是换行),最后是单词Lucy。比如对于一个图书电子商务网站丽w.china-pub.com而言,其中的计算机图书信息可以用正贝U表达式http://www.china-pub.com/computers/common/info,aspid=*来概括,星号(元字符)代表各种图书索引号。有了这个正则表达式,就可以判断该站点中的某个URL所代表的页面是不是有关计算机图书信息的,即通过将URL与正则表达式匹配,即可得出该URL是否与主题相关。下面举例说明图5所述的生成正则表达式的过程。假设通过聚合后的URL类如下述列表所示,该表具有3条记录http:〃news.qq.com/a/20080925/001586.htm;http:〃news.qq.com/a/20080925/000249.htm;http:〃news.qq.com/a/20080924/000793.htm。如图5所示,三个聚合好URL类分解为站点参数、目录层和查询参数三部分,再将目录层分解成一系列子目录,将查询参数分解成一系列键值对。如下表所示聚合好的URL类列表的站点参数部分都为news.qq.com,则将正则表达式的站点参数段定为news.qq.com。接着将三个聚合好的URL的每个子目录段的子目录域对齐,因为三个URL目录的第一子目录域内容都为a,所以将a添加到正则表达式目录段的第一子目录域中。因为三个URL目录的第二子目录域的内容不完全相同,第三子目录域的内容也不完全相同,所以将"*"加入到正则表达式目录段的第二、三子目录域内。因为三个URL类的查询参数都为空,所以正则表达式的键值对段为空。最后,生成的URL正则表达式为http:〃news.qq.com/a/*/*。具体的划分过程参考下表<table>tableseeoriginaldocumentpage13</column></row><table>本发明所述装置提供的生成URL正则表达式的实施例框图参考图6。图6所述实施例包括划分单元601,用于读取输入的URL列表,按照预定的划分规则划分成多个URL子集;聚合单元602,用于将所述URL子集按照预定的聚类规则聚合成多个URL类;表达式生成单元603,用于从聚合单元聚合成的多个URL类中抽取所述聚合成的URL类,生成正则表达式。其中,划分单元601的具体结构参考图7。图7所述划分单元包括第一划分子单元701,用于将具有相同站点参数的URL划分到同一个URL子集;第二划分单元子702,用于将站点参数相同并且目录层也相同的URL划分到同一个子集;第三划分子单元703,用于将站点参数相同并且目录层和查询参数也相同的URL划分到同一个子集;选择子单元704,用于从第一、第二和第三划分子单元中选择其中的一个子单元执行划分操作。在本实施例中,采用将具有相同站点参数的URL划分到同一个URL子集的规则,具体的划分URL子集的一个典型处理操作可以是先建立一个空表m即,所述m即有两个字段key和value,其中字段key用于存储站点参数,字段value用于存储URL列表;接着输入URL集合,然后判断输入的URL集合中是否含有URL,如果没有URL,说明输入的URL集合为空或者其中的URL已经被处理完毕,结束划分操作;如果输入的URL集合中有URL,读取一条URL,抽取该URL的站点参数,将所述站点参数与字段key中已经存储的站点参数比较,如果存在该站点参数,则将所述输入的URL添加到与该站点参数对应的URL列表中,如果不存在该站点参数,则将该站点参数添加到字段key中,最后将所述输入的URL添加到与该站点参数对应的URL列表中。由于URL子集的划分还有很多的划分方式,不同的需求,得到的划分结果也不同。因此,在本发明所述装置的其它实施例中,采用其它划分方式,例如,采用将站点参数相同并且目录层也相同的URL划分到同一个子集;或者,将站点参数相同并且目录层和查询参数也相同的URL划分到同一个子集的划分规则进行划分,等等。图8是图6所示实施例采用的聚合单元的实施例框图。图8所述装置实施例,包括类存储子单元804,用于存储符合聚类规则的URL类;设置子单元801,用于设置距离阈值h;静态聚合子单元802,用于将选择子单元选择的划分子单元的输出结果按照距离阈值h进行静态聚合;第一条件子单元803,判断静态聚合的结果是否符合聚类规则,如果符合,获得聚合后的URL类存入到类存储单元,否则,设置新的距离阈值h,指示静态聚合子单元按照新的距离阈值h继续进行静态聚合,并继续判断是否符合聚类规则。图9是图8所示实施例采用的静态聚合单元的实施例框图。图9所示实施例包括类操作子单元903,用于生成URL类;URL读取子单元901,用于从所述URL子集中读取没有被聚类的URL作为当前待聚类的URL;第二条件子单元902,判断已经被聚类的URL集合中是否有与当前待聚类的URL匹配的类别,如果匹配,则指示类操作子单元将所述当前待聚类的URL加入到匹配的URL类中,否则,指示类操作子单元依据所述当前待聚类的URL建立一个新的URL类。在本实施例中,采用静态聚合一个典型处理操作可以是建立URL类列表,输入一个URL列表,从划分完毕的URL子集中读取没有被聚类的URL作为当前待聚类的URL,判断是否有待聚类的URL,如果没有,则结束聚合操作;如果有,则读取一条待聚类的URL,然后判断已经被聚类的URL集合中是否有与当前待聚类的URL匹配的类别,如果有,则将所述当前待聚类的URL加入到匹配的URL类中,如果没有则依据所述当前待聚类的URL建立一个新的URL类。上述操作中提及的匹配,指当前已经读取的URL和URL类列表中所有URL的距离都小于或等于距离阈值h。这样经过聚合后,在URL类列表中就存储了一些URL类,同一个类内的所有URL相互之间的距离都不大于距离阈值h,所以同一个类内的URL具有一定的相似性。上述操作提及的聚类规则要满足下面两个条件l.m〈二sqrt(n),其中sqrt为开平方;2.m个URL类中最大的mXc个URL类包含的URL总数〉二nXq。其中,m为静态聚合产生的聚合结果中的URL类的个数,n为URL总数,c,q为介于0和1之间的小数。图10是图6所示实施例采用的表达式生成单元的实施例框图。图10所示实施例包括参数分解子单元IOOI,用于将聚合后的URL类中的每个URL的目录分解成若干个子目录、查询参数分解成若干个键值对;生成子单元1002,用于从聚合后的URL类中提取相同的站点参数加入正则表达式的站点参数段;以及从聚合后的URL类中提取子目录的内容,判断聚合后的URL类中的每个URL的子目录内容是否完全相同,若每个子目录的内容完全相同,将该子目录内容加入到正则表达式的目录段对应的子目录域,否则,将"*"加入到正则表达式的目录段对应的子目录域;从聚合后的URL类中提取键值对内容,判断聚合后的URL类中的每个URL的键值对内容是否完全相同,若键值对内容完全相同,将该键值对的内容加入到正则表达式的键值对段,否则,将"*"加入到正则表达式的键值对段。在本实施例中,一个生成正则表达式的典型操作为从聚合后的URL类中提取相同的站点参数加入正则表达式的站点参数段,将聚合后的URL类中的每个URL的目录分解成若干个子目录、查询参数分解成若干个键值对,从聚合后的URL类中提取子目录的内容,判断聚合后的URL类中的每个URL的子目录内容是否完全相同,如果内容完全相同,则将该子目录内容加入到正则表达式的目录段对应的子目录域,如果不完全相同,则将"*"加入到正则表达式的目录段对应的子目录域,然后从聚合14后的URL类中提取键值对内容,判断聚合后的URL类中的每个URL的键值对内容是否完全相同,如果完全相同,将该键值对内容加入到正则表达式的键值对段对应的键值对域,如果不完全相同,则将"*"加入到正则表达式的键值对段对应的键值对域,生成正则表达式。因此,本项发明的技术性范围并不局限于说明书上的内容,还有很多根据其权利要求确定的具体的技术性应用方案。以上所述仅是本发明的优选实施方式,应当指出,对于本
技术领域
的普通技术人员来说,在不脱离本发明原理的前提下,还可以作出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。权利要求一种基于URL的正则表达式的生成方法,其特征在于包括将输入的URL列表按照预定的划分规则划分成多个URL子集;将所述URL子集按照预定的聚类规则聚合成多个URL类;抽取所述聚合成的URL类,生成正则表达式。2.如权利要求1所述方法,其特征在于,所述划分URL子集的规则包括将具有相同站点参数的URL划分到同一个URL子集;或者,将站点参数相同并且目录层也相同的URL划分到同一个子集;或者,将站点参数相同并且目录层和查询参数也相同的URL划分到同一个子集。3.如权利要求2所述的方法,其特征在于,按照下述步骤将所述URL子集聚合成多个亂类设置距离阈值h;对输入的URL列表按照距离阈值h进行静态聚合;判断静态聚合的结果是否符合聚类规则,如果符合,获得聚合后的URL类,否则,设置新的距离阈值h,按照新的距离阈值h继续进行静态聚合,并判断是否符合聚类规则。4.如权利要求3所述的方法,其特征在于,所述静态聚合的过程包括从所述URL子集中读取没有被聚类的URL作为当前待聚类的URL;判断已经被聚类的URL集合中是否有与当前待聚类的URL匹配的类别,如果匹配,则将所述当前待聚类的URL加入到匹配的URL类中,否则,依据所述当前待聚类的URL建立一个新的URL类。5.如权利要求3或4所述的方法,其特征在于同一个类内的所有URL相互之间的距离小于或等于距离阈值h。6.如权利要求5所述的方法,其特征在于,所述生成正则表达式的步骤包括从聚合后的URL类中提取相同的站点参数加入正则表达式的站点参数段;将聚合后的URL类中的每个URL的目录分解成若干个子目录、查询参数分解成若干个键值对;从聚合后的URL类中提取子目录的内容,判断聚合后的URL类中的每个URL的子目录内容是否完全相同,若每个子目录的内容完全相同,将该子目录内容加入到正则表达式的目录段对应的子目录域,否则,将"*"加入到正则表达式的目录段对应的子目录域;从聚合后的URL类中提取键值对内容,判断聚合后的URL类中的每个URL的键值对内容是否完全相同,若键值对内容完全相同,将该键值对的内容加入到正则表达式的键值对段,否则,将"*"加入到正则表达式的键值对段。7.—种基于URL的正则表达式的生成装置,其特征在于包括划分单元,读取输入的URL列表,按照预定的划分规则划分成多个URL子集;聚合单元,用于将所述URL子集按照预定的聚类规则聚合成多个URL类;表达式生成单元,从聚合单元聚合成的多个URL类中抽取所述聚合成的URL类,生成正则表达式。8.如权利要求7所述装置,其特征在于,所述划分单元包括第一划分子单元,将具有相同站点参数的URL划分到同一个URL子集;第二划分子单元,将站点参数相同并且目录层也相同的URL划分到同一个子集;或者,第三划分子单元,将站点参数相同并且目录层和查询参数也相同的URL划分到同一个子集;选择子单元,用于从第一、第二和第三划分单元中选择其中的一个单元执行划分操作。9.如权利要求8所述的装置,其特征在于,所述聚合单元包括类存储子单元,用于存储符合聚类规则的URL类;设置子单元,用于设置距离阈值h;静态聚合子单元,用于将选择子单元选择的划分子单元的输出结果按照距离阈值h进行静态聚合;第一条件子单元,判断静态聚合的结果是否符合聚类规则,如果符合,获得聚合后的URL类存入到类存储子单元,否则,设置新的距离阈值h,指示静态聚合子单元按照新的距离阈值h继续进行静态聚合,并继续判断是否符合聚类规则。10.如权利要求9所述的装置,其特征在于,所述静态聚合单元包括类操作子单元,用于生成URL类;URL读取子单元,用于从所述URL子集中读取没有被聚类的URL作为当前待聚类的URL;第二条件子单元,判断已经被聚类的URL集合中是否有与当前待聚类的URL匹配的类别,如果匹配,则指示类操作子单元将所述当前待聚类的URL加入到匹配的URL类中,否则,指示类操作子单元依据所述当前待聚类的URL建立一个新的URL类。11.如权利要求IO所述的装置,其特征在于,所述表达式生成单元包括参数分解子单元,用于将聚合后的URL类中的每个URL的目录分解成若干个子目录、查询参数分解成若干个键值对;生成子单元,用于从聚合后的URL类中提取相同的站点参数加入正则表达式的站点参数段;以及,从聚合后的URL类中提取子目录的内容,判断聚合后的URL类中的每个URL的子目录内容是否完全相同,若每个子目录的内容完全相同,将该子目录内容加入到正则表达式的目录段对应的子目录域,否则,将"*"加入到正则表达式的目录段对应的子目录域;从聚合后的URL类中提取键值对内容,判断聚合后的URL类中的每个URL的键值对内容是否完全相同,若键值对内容完全相同,将该键值对的内容加入到正则表达式的键值对段,否则,将"*"加入到正则表达式的键值对段。全文摘要一种基于URL的正则表达式的生成方法,将输入的URL列表按照预定的划分规则划分成多个URL子集;将划分好的多个URL子集按照预定的聚类规则聚合成多个URL类;从聚合成的多个URL类中生成具有一定特征的正则表达式。该方法能够按照不同的划分规则划分URL,以及通过预定的聚类规则生成的正则表达式,因此能够实现准确地生成正则表达式。本发明还提供一种基于URL的正则表达式的生成装置。文档编号G06F17/30GK101727447SQ20081016748公开日2010年6月9日申请日期2008年10月10日优先权日2008年10月10日发明者徐和平,郑小林申请人:浙江搜富网络技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1