文章多了,想瞭解一下哪幾篇文章看得人最多,
雖然Pixnet有提供熱門文章的排行,但只能顯示5篇,
聽說以後會改成可以設定要顯示幾篇熱門文章,
大家一起期待吧。

下面這個程式可以顯示所有文章的人氣,
並且給他排序。

用法麻,當然是要先灌perl,
然後將下面的程式存成檔案,假設存成rate.pl好了,
最後在命令列模式執行perl rate.pl 帳號 頁數,如
perl rate.pl jck11 5
Enter下去,就執行啦。
帳號可以輸入別人的,如果你想知道別人的文章的人氣的話,
頁數對應著文章數,pixnet新模版的話一頁有100篇的文章。


use WWW::Mechanize;
use HTML::TreeBuilder;
use Encode;

my $id=$ARGV[0] || 'jck11';
my $page=$ARGV[1] || 1;
my %hash;

my $mech=WWW::Mechanize->new;

for($i=1; $i<=$page; $i++){
my $url='http://blog.pixnet.net/'.$id.'/listall/'.$i;
my $res=$mech->get($url);
my $html = encode("big5",decode("utf8",$res->content));
&parse_onepage($html);
}

my $rate=0;
foreach $key(sort{$hash{$b}->[1] <=> $hash{$a}->[1]}(keys(%hash))){
print ++$rate, ' ', $hash{$key}->[0], ' ', $hash{$key}->[1], "\n";
}

sub parse_onepage{
my $html=shift;
my $root=HTML::TreeBuilder->new_from_content($html);
my @links=$root->look_down(
_tag=>'td',
class=>'list-title',
);
for($j=0; $j<=$#links; $j++){
my $key= $links[$j]->{'_content'}[0]->attr('href');
next if exists $hash{$key};
my $title= $links[$j]->as_trimmed_text;
my $readcount= $links[$j]->right()->as_trimmed_text;
$readcount=~ s/[()]//g;
$hash{$key}=[$title, $readcount];
}
$root->delete;
}
arrow
arrow
    全站熱搜

    jck11 發表在 痞客邦 留言(1) 人氣()