从HTML :: TreeBuilder获取多个结果

时间:2013-10-25 23:08:53

标签: perl html-parsing

我正在尝试解析html文件并提取一些信息并对其进行统计。

但我的问题是,HTML :: TreeBuilder只返回1个结果,但我需要正则表达式捕获的所有结果。

#!/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 个答案:

答案 0 :(得分:11)

在标量上下文中,返回look_down的第一个结果。

由于链接look_down->as_HTML,您在标量上下文中使用。

在列表上下文中调用,然后使用map将每个元素转换为HTML。

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