1

我正在尝试解析一个 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>';

有人出主意吗?

例如,我缩短了文件,因为该文件可以包含很多此类表。

4

1 回答 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]*?}));
于 2013-10-25T23:48:42.940 回答