Posted at

Perl で robots.txt チェック

More than 5 years have passed since last update.

robots.txt である URL へのロボットアクセスが認められているかどうかチェックしたいときは、自分で robots.txt を解釈するコードを書いてもいいんですが、 WWW::RobotRules::Extended を使うと便利です。

use WWW::RobotRules::Extended;

sub check ($$) {
my ($ua, $url) = @_;
my $rules = WWW::RobotRules::Extended->new ($ua);
my $robots_txt = url_to_canon_url q</robots.txt>, $url;
my (undef, $res) = http_get url => $robots_txt;
return 1 unless $res->is_success;
$rules->parse ($robots_txt, $res->content);
return $rules->allowed ($url);
}

WWW::RobotRules というのもありますが robots.txt の1996年版仕様にある Allow: に対応していないなど古くて実用的ではありません。