我想从html文件中提取所有表,并按照以下方式打印它们的内容——每个单元格由t
分隔,每个行由n
分隔,每个表由nn
分隔。以下是我的脚本,当我将其更改为tr上的findvalues时,整个tr将作为一个元素插入,我甚至尝试了其他方法,如findnodes_as_strings($path),我想将其修改为上述结构。
use strict;
use warnings;
use HTML::TreeBuilder::XPath;
my $tree= HTML::TreeBuilder::XPath->new;
$tree->parse_file( "html.html");
my @values=$tree->findvalues(q{//table//tr//td});
print $_, "n" foreach(@values);
您需要分别处理每个表,对于行也是如此:
foreach my $table ( $tree->findnodes('//table') ) {
foreach my $row ( $table->findnodes('.//tr') ) {
my @cells = $row->findvalues('.//td');
print join("t", @cells), "n";
}
print "n";
}
当然,这只是简单表的解决方案(想想columnspan、th、表内表等)