Hippo2000 (2000/7/28)
WWW::RobotRulesモジュールです。LWP:RobotUAモジュールLWPモジュール群のドキュメントなのです。
Gisle Aasさんが作成されました。
WWW::RobotsRules - robots.txtファイルの解析
require WWW::RobotRules; my $robotsrules = new WWW::RobotRules 'MOMspider/1.0';
use LWP::Simple qw(get);
$url = "http://some.place/robots.txt";; my $robots_txt = get $url; $robotsrules->parse($url, $robots_txt);
$url = "http://some.other.place/robots.txt";; my $robots_txt = get $url; $robotsrules->parse($url, $robots_txt);
# "robots.txt"ファイルを取得し、解析したそれらのサーバのためにURLが適正であれば
# ここからチェックすることができます。
if($robotsrules->allowed($url)) {
$c = get $url;
...
}
このモジュールは<http://info.webcrawler.com/mak/projects/robots/norobots.html> で記述されている"A Standard for Robot Exclusion"で定義されている/robots.txt を解析します。Webマスターは/robots.txtを使って、自分たちのWebサイトの部分へのロボットのアクセスを従わせる(訳者注:confirm 認証するの間違いか?)ことを許さないことが出来ます。
解析されるファイルはWWW::RobotRulesに格納され、与えられたURLへのアクセスが許されていれば、このオブジェクトはチェックのためのメソッドを提供します。同じWWW::RobotRulesオブジェクトは複数の/robots.txt ファイルを解析することができます。
以下のメソッドが提供されます:
new($robot_name)new()
に与えられる最初の引数はそのロボットの名前です。parse()
メソッドは引数として/robots.txt
ファイルとその内容を取り出すために使われるURLを取ります。allowed($url)agent([$name])"/robots.txt"ファイルの形式、セグメントは以下の通りです(これは<http://info.webcrawler.com/mak/projects/robots/norobots.html>の概要を編集しています):
ファイルは1つまたは複数レコードにより構成され、1つまたは複数の空行により分割されます。各レコードは以下のような形式の行が入ります:
<field-name>: <value>
フィールド名は大文字小文字を区別します。'#'という文字の後のテキストは解析のとき無視されます。これはコメントに使われます。以下の<field-names>を使うことが出来ます:
以下の"/robots.txt"ファイルの例は、"/cyberworld/map"または"/tmp/"から始まるURLにロボットは訪れてはいけないということを指定しています:
User-agent: * Disallow: /cyberworld/map/ # This is an infinite virtual URL space Disallow: /tmp/ # these will soon disappear
この"/robots.txt"ファイルは"cybermapper"というロボットを除く、すべてのロボットは"/cyberworld/map"から始まるURLに訪れてはいけないということを指定します:
User-agent: * Disallow: /cyberworld/map/ # This is an infinite virtual URL space
# Cybermapper knows where to go. User-agent: cybermapper Disallow:
この例はロボットはこのサイトにはこれより先に訪れてはいけないということを示します:
# go away User-agent: * Disallow: /
LWP::RobotUA, WWW::RobotRules::AnyDBM_File
ご意見、ご質問はこちらの掲示板で受け付けています。
またメールは河馬屋(Nifty)にお願いします。