【问题标题】:Printing table contents using Html::TreeBuilder::XPath使用 Html::TreeBuilder::XPath 打印表格内容
【发布时间】:2013-08-07 12:53:57
【问题描述】:

我想从一个 html 文件中提取所有表格并按以下方式打印它们的内容,每个单元格由\t 分隔,每一行由\n 分隔,每个表格由\n\n 分隔。以下是我的脚本,当我将其更改为 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);

【问题讨论】:

标签: html perl html-table html-tree


【解决方案1】:

您需要单独处理每个表,行相同:

foreach my $table ( $tree->findnodes('//table') ) {

    foreach my $row ( $table->findnodes('.//tr') ) {

        my @cells = $row->findvalues('.//td');
        print join("\t", @cells), "\n";
    }
    print "\n";
}

当然,这只是简单表格的解决方案(想想columnspans、th、table inside table等)

【讨论】:

  • 非常感谢,这正是我所期望的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-02-20
  • 2012-01-17
  • 1970-01-01
  • 2013-07-28
  • 1970-01-01
  • 2018-10-16
  • 1970-01-01
相关资源
最近更新 更多