« Apache 1.3.31が | トップページ | ITmedia ライフスタイル:改正著作権法、来年1月施行へ。残された手段は…… »

2004.06.02

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追記:
コンストラクタを作成ってなんだよ俺…と言うわけで一部訂正。

|

« Apache 1.3.31が | トップページ | ITmedia ライフスタイル:改正著作権法、来年1月施行へ。残された手段は…… »

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/13747/701554

この記事へのトラックバック一覧です: HTML-LinkExtorモジュールを使ってみる:

« Apache 1.3.31が | トップページ | ITmedia ライフスタイル:改正著作権法、来年1月施行へ。残された手段は…… »