18 мая 2009

Массовая проверка PageRank

Чтобы проверить pagerank для множества URLов, нужно сперва установить перловый модуль WWW::Google::PageRank. Затем создать файл pages.txt с адресами страниц, по одному в строке. Выполнить в консоле команду perl script.pl. И скрипт создаст файл pr.csv, где напротив каждого URLа будет заветная циферка :)

#!/usr/bin/perl -w
use strict;
use warnings;
use Getopt::Std;
use File::Basename;
use WWW::Google::PageRank;
open(PRANK,">pr.csv") or die "could not open $!";
my $pr = WWW::Google::PageRank->new;
my %opts;
getopts('uhsd:', \%opts);
my $urlfile = 'pages.txt';
&usage if ($opts{'u'} || $opts{'h'});
die "Please supply a file containing URLs\n" unless $urlfile;
die "No file found at '$urlfile'!\n" unless -e $urlfile;
my $urls = get_urls($urlfile);
if ($opts{'s'}) {}
foreach my $url (sort keys %$urls) {
if ($opts{'d'}) {
print "${url}$opts{'d'}" . $pr->get($url), "\n";
print PRANK "${url}$opts{'d'}," . $pr->get($url), "\n";
} else {
print "${url} " . $pr->get($url), "\n";
print PRANK "${url}," . $pr->get($url), "\n";
}
}
sub get_urls {
my $urlfile = shift;
my %urls;
open(URLS, "<$urlfile") or die "Failed to open '$urlfile': $!";
while() {
my $url;
chomp;
next if /^#/;
next if /^\s*$/;
s/\s*(\S*)?\s*/$1/;
$url = $1;
unless($url =~ '^http://') {
$url = 'http://' . $url;
}
$urls{$url} = 0;
}
close URLS;
return \%urls;
}
close PRANK;

1 комментарий:

на этом сайте нет nofollow-ссылок, поэтому комментируйте смело, одобряем любой спам