• 締切済み

HTML::Parserの解析結果

HTML::Parserを使ってHTMLからimgタグを抽出しようとしています。 http://homepage3.nifty.com/hippo2000/perltips/html/Parser.htm などの解説どおりに書けばimgタグの各項目を取り出すことは出来るのですが結果を配列で取得することができません。 解析したいHTMLを渡すことでimgタグの各情報を配列で受け取るには堂書けばいいのか教えてください。 HTML::TokeParserも試してみましたがまれに正しく抽出できない場合があり使えませんでした。 同じHTMLをHTML::Parserで解析したところ全て正しく抽出できたのでHTML::Parserで処理したいと考えています。

みんなの回答

  • sakusaker7
  • ベストアンサー率62% (800/1280)
回答No.1

一週間経過しているのでご自分で解決されたかもしれませんが 削除もされていないので一応書いておきます。 hippoさんのところのドキュメントより新しいバージョンだと思うので 多少事情が違うかもしれませんが、 use strict; use warnings; use HTML::Parser; my @imgs; my $p = HTML::Parser->new( api_version => 3, start_h => [\@imgs, "attr"], marked_sections => 1, ); $p->report_tags(qw(img)); $p->parse_file("index.html"); foreach my $ary_ref (@imgs) { #$ary_ref->[0]が指すハッシュはimg タグで使われている属性を #キーとしている。たとえば altがあれば {alt}の要素も存在する。 print $ary_ref->[0]->{src}, "\n"; } こんなスクリプトで、index.htmlの中にある imgタグの src部分を全部出力できました。 上記の例では出力していますが、各要素のsrcを集めて配列に収めるのなら push @links, $ary_ref->[0]->{src}; のようにしてやればよいと思います。

関連するQ&A

専門家に質問してみよう