0
我无法从HTML表格中恢复数据。 这是我的。perl HTML :: TableExtract超出范围错误
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 \n\n";
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,但无法找到它或所需的Badger::Base通过PPM和HTML::Element看起来像它更好地用于表建设。 我在脚本的前面也使用了WWW::Mechanize。
任何帮助我上面的代码将不胜感激。
感谢鲍罗廷。在我尝试删除代码时,我忘记了模块,并严格使用警告。他们在我的实际代码:)。我用这个代码通过HTML :: ElementTable :: DataElement = HASH(0x3b91ff8)得到了一个数据元素哈希引用,就像这个一样。任何想法如何解决这个问题。 – MicrobicTiger
@MicrobicTiger:你有没有从'HTML :: TableExtract'中移除'tree'?正如我所说的,你不需要它,它只是使代码更复杂。你似乎也缺少'$ te'的声明,或者至少它不是它应该在的地方。你应该把它放在第一次使用的地方,就像我在自己的代码中一样。 – Borodin
啊,我看到了问题。 我有一些未初始化的值,但效果更好。谢谢@Borodin,在过去的几天中,我已经感谢您的帮助。 – MicrobicTiger