« perl で cookie を取得 | メイン | CSV の行を分解 »
2004年08月03日
perl でリンクを抽出する
perl でリンクを抽出するには HTML::LinkExtor モジュールを使うのが便利だ。$p = HTML::LinkExtor->new([$callback[, $base]]);
まずは LinkExtor オブジェクトを作るわけだが、 callback 関数を指定しておくと、 リンクを見つけるたびに callback 関数が呼び出される。 callback 関数を指定していないときは $p->links で 含まれるリンクを明示的に読み出すことができる。
$base を指定しておくと、相対パスで指定されたリンクを 自動的に $base を基準にしたものとみなして絶対パスに直してくれる。
文字列からリンクを抽出したいときは $p->parse($strings) とするが、 ファイルからリンクを抽出するときは $p->parse_file($filename) とする。
では、http://www.augustus.to/ に含まれるリンクを抽出してみよう。
use LWP;
use HTML::LinkExtor;
$url="http://www.augustus.to/";
$browser = LWP::UserAgent->new;
$response = $browser->get($url);
$p = HTML::LinkExtor->new(\&callback,$url);
$p->parse($response->{_content});
sub callback {
my($tag, %links) = @_;
print "$tag @{[%links]}\n";
}
callback 関数を使わないならこんな感じ。
use LWP;
use HTML::LinkExtor;
$url="http://www.augustus.to/";
$browser = LWP::UserAgent->new;
$response = $browser->get($url);
$p = HTML::LinkExtor->new(unlink(),$url);
$p->parse($response->{_content});
for $x ($p->links){
print join(" ", @{$x}),"\n";
}
投稿者 augustus : 2004年08月03日 08:54
トラックバック
このエントリーのトラックバックURL:
http://www.augustus.to/cgi-bin/blog/mt-tb.cgi/65
このリストは、次のエントリーを参照しています: perl でリンクを抽出する:
» 相互リンク 募集中です。 from 相互リンク 募集中です。
[続きを読む]
トラックバック時刻: 2007年07月12日 11:03