|文章出处:http://hi.baidu.com/_wang8
基于Simhash的应用模板识别Perl demo
对于同一应用模板生成不同的url,url可能的pathdir、filename、arguments的一项或者几项可能不同。同时
web页面的展示一眼看过去也差别较大。在url聚类的需求场合,需要能自动识别web/url的相似度。
这里是利用simhash算法,通过对web页面的一些token的value进行统计分析。来综合判断两条url间的是
否为同一应用模板生成,也为web相似度。理论上,由同一模板生成的页面在token的数量、顺序、值上会存
在一定的规律
#!/usr/bin/perl
#Compare the similarity of two pages
#http://hi.baidu.com/_wang8
#2011.04.23
#use warnings;
#use strict;
use HTML::TokeParser;
use LWP::Simple;
#use Data::Dumper;
use URI;
use URI::Split qw(uri_split uri_join);
sub GetUrl
{
my $url = shift;
if($url !~ /^http/)
{
print "warning:error format url.\n";
next;
}
my $content = LWP::Simple::get($url) or die "cannot request the url:$url\n";
utf8::decode($content);
return $content;
}
sub GetToken
{
my $content = shift;