/ / HTMLから複数の結果を得る:: TreeBuilder - perl、html解析

HTML :: TreeBuilderから複数の結果を得る - perl、html-parsing

私はHTMLファイルを解析し、いくつかの情報を抽出し、それを統計することを試みています。

しかし、私の問題は、HTML :: TreeBuilderは1つの結果しか返さないということですが、Regexによってキャッチされるすべての結果が必要です。

#!/bin/perl
use strict;
use warnings;

use Data::Dumper;
use HTML::TreeBuilder;


my $tree = HTML::TreeBuilder->new();
$tree->parse_file("tester.html");
print Dumper($tree->look_down(_tag => "table",id => qr{post[0-9]*?})->as_HTML);
$tree->delete;

tester.html:

<table id="post923076">
<tr>
<td>table1_result</td>
</tr>
</table>
<table id="post923076">
<tr>
<td>table2_result</td>
</tr>
</table>

私の結果:

$VAR1 = "<table id="post923076"><tr><td>table1_result</td></tr></table>";

誰かが考え?

ファイルはこのテーブルの多くを含む可能性があるので、私は例えばファイルを短くしました。

回答:

回答№1の11

スカラコンテキストでは、の最初の結果 look_down 返されます。

連鎖の結果としてスカラコンテキストで使用している look_down->as_HTML.

リストコンテキストで呼び出してから使う map 各要素をHTMLに変換します。

print Dumper(map { $_->as_HTML } $tree->look_down(_tag => "table", id => qr{post[0-9]*?}));