用Perl抓取HTML文件,按顺序只返回内容



使用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'方法。(遵循这个好主意,但我需要它的所有元素)

这样比较好(使用Mojo::DOM):

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

相关内容

  • 没有找到相关文章

最新更新