lib-wwwの続き

でパーサを調べていたのですが、Spidering hacks―ウェブ情報ラクラク取得テクニック101選Spidering hacks―ウェブ情報ラクラク取得テクニック101選の#19のHTML::TreeBuilderがあまりに使いにくかったので、HTML::TokeParserを勉強しました。
http://homepage3.nifty.com/hippo2000/perltips/html/TokeParser.htmのサンプルを元に以下のことがわかりました。

$p = new HTML::TokeParser(\$page);
#取得したページ情報をオブジェクトへ

$text = $p->get_trimmed_text;
#これは開始と終了タグで囲まれたテキストの取得

$val = $token->[1]{src};# $tokenには読み込みたいタグと一致する行が代入される
#この場合タグ行にあるsrcに代入する値の取得

他にもあるかもしれませんが、これらが十分理解できたので良かったです。

例えば

$p = new HTML::TokeParser(\$page);		#何故か \ が必要
while(my $token = $p->get_tag("form")){
	my $acc = $token->[1]{action};
	my $method = $token->[1]{method};
	print "acc:$acc method:$method\n";
}

のように書けばアクションとメソッドが取得できるのです。とはいえ入れ子になる場合は、対処できないでしょうけど・・・ その場合はHTML::TreeBuilderなのかな。何処かに参考になるところはないかな?