perlによるhtmlの解析

初めてのPerl 第6版

初めてのPerl 第6版

もっと自在にサーバを使い倒す 業務に役立つPerl (Software Design plus)

もっと自在にサーバを使い倒す 業務に役立つPerl (Software Design plus)

perlによるhtmlの解析サンプルコード

use strict;
use warnings;
use HTML::TreeBuilder;

#文字コード
use utf8;
binmode STDIN, ":utf8";
binmode STDOUT, ":utf8";

#-------------------------------------------------------------------------------
use HTML::TreeBuilder;
my $tree = new HTML::TreeBuilder;
$tree->parse_file( "test.html" );
$tree->eof();

# 含まれるTXTを取り出す
foreach my $tag ($tree->find("h1")) {
	print $tag->as_text."\n";
}

# 含まれるHTMLを取り出す
foreach my $tag ($tree->find("h1")) {
	print $tag->as_HTML."\n";
}

# 含まれる要素の値を取り出す
foreach my $tag ($tree->find("a")) {
	print $tag->attr('href'),"\n"; 
}

# -- タグの要素と値にフォーカスして処理 --
# 要素 class に値 entry_body をもつものを取り出す
for my $tag ( $tree->look_down("class", "entry_body") ){
	print $tag->as_text."\n";
}

# 値の指定には正規表現も
for my $tag ( $tree->look_down("class", qr/entry_/) ){
	print $tag->as_text."\n";
}

# 要素 id で引っ張ってくる場合はこんな感じ。
for my $tag ( $tree->look_down("id", "link") ){
	print $tag->as_text."\n";
}


# aタグのリンクとテキストを取得する
for my $a ($tree->find('a')) {
	print join(" - ", $a->as_text, $a->attr_get_i('href'))."\n";
}

$tree = $tree->delete;
use HTML::TreeBuilder;
my $tree = new HTML::TreeBuilder;
$tree->parse_file( "test2.html" );
$tree->eof();

# aタグのリンクとテキストを取得する
for my $a ($tree->find('a')) {
	print join(" - ", $a->as_text, $a->attr_get_i('href'))."\n";
}

# リンクをぜんぶ
for my $attr ( $tree->look_down("href", qr{http://} ) ){
    print $attr->as_text."\n";
}

$tree = $tree->delete;