perl HTML::TableExtract 超出范围错误



我很难从HTML表中恢复数据。这是我所拥有的。

use strict; 
use warnings;
use HTML::TreeBuilder;
use HTML::TableExtract qw(tree); #
use WWW::Mechanize;
my $d = 3; 
my $c = 4; 
$te = HTML::TableExtract->new( depth => $d, count => $c ); # , decode => 1, gridmap => 1
$te->parse($mech->content);
print "nDepth = $d, Count = $c nn";
my $table = $te->first_table_found;
my $table_tree = $table->tree();
my @rows = $table->rows();
print "The row count is   : ".$rowcount,"n";
print "The column count is: ".$colcount,"n";
foreach my $row (@rows)
{
   my @read_row = $table->tree->row($row);
   foreach my $read (@read_row)
   {
      print $read, "n";
   }
}

我收到这是错误消息。

"Rows(ARRAY(0x2987ef8)) out of range at test4.pl line 91."

有没有更好的方法来查看表格并获取值。我没有要查找的标题,我已经查看了 HTML::Query,但找不到它,或者通过 PPM 和 HTML::Element 所需的 Badger::Base 看起来它更适合用于表构造。我还在脚本前面使用了 WWW::Mechanize。

对我上面的代码的任何帮助将不胜感激。

对于大多数目的,您实际上并不需要树提取模式

始终use strictuse warnings你编写的每个 Perl 程序的顶部,并声明你的变量尽可能接近它们的第一个使用点。

您的调用$table->rows()返回数组引用列表,您可以像这样访问该列表

my $te = HTML::TableExtract->new(depth => $d, count => $c); # , decode => 1, gridmap => 1
$te->parse($mech->content);
printf "nDepth = %d, Count = %dnn", $d, $c;
my $table = $te->first_table_found;
my @rows = $table->rows;
for my $row (@rows) {
  print join(', ', @$row), "n";
}

相关内容

  • 没有找到相关文章

最新更新