PerlのWeb::ScraperでHTMLを簡単パース

PerlのScraperモジュールを使えばHTMLを簡単にパースできる。

Scraperをインストール

#cpan
cpan>> install Web::Scraper

サンプルコード

use Web::Scraper;
use URI;
use Data::Dumper;

my $scraper = scraper {
     #tag内のテキストを抽出
     process 'a', 'value' => 'TEXT';
     #tag内の属性を抽出
     process 'a', 'attribute
' => '@href';
     #tag内のHTMLを抽出
     process 'a', 'html[]' => 'HTML';
};

my $uri = new URI('localhost');
my $ptr_result = $scraper->scrape($uri);
my @result = @$ptr_result;

print Dumper @result;

scraper対話モードとXPATH(Firebugで簡単に取得可能)が超便利

scraper "localhost"
#対話モードに入る
scraper> process '/html/body/table[4]/tr/td/table/tr[4]/td/table/tr/td/img', WARN;
#結果
<img height="15" src="/img/spacer.gif" width="15" />
<img height="15" src="/img/spacer.gif" width="15" />