4

使用 HTML::TreeBuilder - 或 Mojo::DOM - 我想抓取内容但保持有序,以便我可以将文本值放入数组中(然后用变量替换文本值模板目的)

但这在 TreeBuilder

my $map_r = $tree->tagname_map();

my @contents = map { $_->content_list } $tree->find_by_tag_name(keys %$map_r);

foreach my $c (@contents) {
  say $c;
}

不返回顺序——当然散列是没有顺序的。那么,如何从根向下访问树并保持返回值的顺序呢?递归地走树?本质上,我想对每个元素都使用“as_text”方法。(遵循这个好主意,但我需要所有元素)

4

1 回答 1

0

这更好(使用 Mojo::DOM):

$dom->parse($html)->find('*')->each(
    sub {
        my $text = shift->text;
        $text =~ s/\s+/ /gi;
        push @text, $text;
    }
  );

但是,欢迎任何进一步的评论。

于 2015-09-09T20:44:49.210 回答