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