HTML-LinkExtorモジュールを使ってみる
本来はDate-Japanese-Eraを先にどうにかせねば、と思ったのですが、造らねばならなくなったスクリプト用の忘備録もかねて。
まずインストールは例によってCPANから。この前VC6を入れたのでmakeもばっちりです。まmakeしなくてもいけそうな気が相変わらずするわけですが…。
HTML-LinkExtorはHTML-Parserのサブクラスなので、これをgetするためにはHTML-Parserをインストールします。ここからアーカイブを取ってきて適当なディレクトリに解凍します。コマンドプロンプトでそのディレクトリに移ったら
perl makefile.pl
nmake
nmake install
としてやればOK。VCなんて持ってないYO! ってひとはBorland C++ Compiler 5.5付属のmakeでもいいはずなので、そちらをどうぞ。この場合nmakeじゃなくmakeですね。
ではモジュールの説明。
HTML-LinkExtorモジュールつぅのはHTMLのリンクを取り出すためのHTMLパーサです。まぁすべこべ言わずサンプルコードをどうぞ。
use strict;
use HTML::LinkExtor;
sub cb {
my($tag, %links) = @_;
my @test=%links;
print "$tag @test \n";
}
my $p = HTML::LinkExtor->new(\&cb);
$p->parse_file("./test.htm");
まずHTML::LinkExtor->new();でオブジェクトを作成します。引数はリンクが見つかった時に呼ばれるサブルーチンへのリファレンス(サブルーチン名に\&をつければOK)です。さらに第2引数には相対リンクを絶対化する際のベースのURIを入れることができますが、これをやるためにはURIモジュールがいるとかいらないとか。とりあえず今回は使いません。
$p->parse_file($file);で解析するHTMLファイルを指定します。また$p->parse($string);でHTML文字列を直接解析する事も可能です。ここらへんはHTML-Parserのドキュメントを読んでもらうほうが速そうです。
で、このサブルーチンは何をしているのかと言うと、発見されたリンクに関する情報の入った無名配列(長ったらしいな…)をごにょごにょ整形して表示しています。たとえばこのページをローカルに保存してこれで解析すると、
a href http://www.gnu.org/software/wget/wget.html
a href ftp://sunsite.dk/projects/wget/windows/
a href ftp://sunsite.dk/projects/wget/windows/wget20031217b.zip
a href ftp://sunsite.dk/projects/wget/windows/ssllibs097c.zip
a href http://weather.is.kochi-u.ac.jp/archive.html#wget_usage
a href http://weather.is.kochi-u.ac.jp/RRD/
とこのように表示されます。あとはこれをもとに煮るなり焼くなり…。
2004/06/06 00:30追記:
コンストラクタを作成ってなんだよ俺…と言うわけで一部訂正。
| 固定リンク
コメント