WWW::RobotRules (libwww-perl v5.48)

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 ファイルを解析することができます。

以下のメソッドが提供されます:

$rules = WWW::RobotRules->new($robot_name)
WWW::RobotRules オブジェクトのためのコンストラクタ。new() に与えられる最初の引数はそのロボットの名前です。
$rules->parse($url, $content, $fresh_until)
parse() メソッドは引数として/robots.txt ファイルとその内容を取り出すために使われるURLを取ります。
$rules->allowed($url)
ロボットがそのURLを取り出すことが許されていれば、TRUEを返します。
$rules->agent([$name])
エージェント名を取得/設定します。注意:エージェント名を変えることはrobots.txtルールとキャッシュの満期タイムアウトをクリアします。

ROBOTS.TXT

"/robots.txt"ファイルの形式、セグメントは以下の通りです(これは<http://info.webcrawler.com/mak/projects/robots/norobots.html>の概要を編集しています):

ファイルは1つまたは複数レコードにより構成され、1つまたは複数の空行により分割されます。各レコードは以下のような形式の行が入ります:

  <field-name>: <value>

フィールド名は大文字小文字を区別します。'#'という文字の後のテキストは解析のとき無視されます。これはコメントに使われます。以下の<field-names>を使うことが出来ます:

User-Agent
このフィールドの値はロボットの名前です。レコードがこのアクセス・ポリシーを記述します。複数のUser-Agent フィールドがあれば、そのレkk−ドは同じアクセス・ポリシーを複数のロボットについて記述してます。レコードにつき少なくとも1つのフィールドが存在することが必要です。もし値が'*'であれば、そのレコードは、他のレコードにマッチしなかったすべてのロボットついてのデフォルトのアクセス・ポリシーについて記述しています。
Disallow
このフィールドの値は訪れてはいけない一部のURLを指定します。フルパスでもパスの一部でも指定することが出来ます;この値から始まるすべてのURLは取り出されません。

ROBOTS.TXTの例

以下の"/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


ホーム Perlの小技 LWP

ご意見、ご質問はこちらの掲示板で受け付けています。
またメールは河馬屋(Nifty)にお願いします。