使用TableExtract在Perl中解析整个表

使用TableExtract在Perl中解析整个表,perl,parsing,html-table,Perl,Parsing,Html Table,我想使用Pearl中的TableExtract解析整个表。这是我用Perl写的: use HTML::TableExtract; use LWP::Simple; use Data::Dumper; my $te = new HTML::TableExtract( depth=>3, count=>3, gridmap=>0); my $content = get("C:/Users/admin/Desktop/tabela.html"); $te->parse($c

我想使用Pearl中的TableExtract解析整个表。这是我用Perl写的:

use HTML::TableExtract;
use LWP::Simple;
use Data::Dumper;

my $te  = new HTML::TableExtract( depth=>3, count=>3, gridmap=>0);
my $content = get("C:/Users/admin/Desktop/tabela.html");
$te->parse($content);

foreach $ts ($te->table_states)
{
    print $ts;
    foreach $row ($ts->rows)
    {
         print Dumper $row;
         #print Dumper $row if (scalar(@$row) == 2);
    }
}
下面是文件“tabela.html”的外观:

02.03.2011 20:30261奥地利西部-斯图姆

当我运行perl脚本时,什么都没有发生。有人知道问题出在哪里吗?

可能还有其他问题,但首先想到的是,您正在使用LWP,并且您正在向它传递一个文件路径,而不是URL

您可能想要
File::Slurp
而不是
LWP::Simple
(请注意,它有不同的API,因此您需要替换
get()

/usr/bin/env perl
使用警告;
严格使用;
使用HTML::TableExtract;
使用数据::转储程序;
my$content=表_状态){
打印$ts;
对于我的$row($ts->rows){
打印转储程序$行;
#如果(标量(@$row)==2),则打印转储程序$row;
} 
}
#HTML::TableExtract::Table=HASH(0x91e2e0)$VAR1=[
#          '02.03.2011 20:30',
#          '261',
#“奥地利W.”,
#          '-',
#“STURM”,
#          '1.80',
#          '3.30',
#          '3.90',
#未定义
#        ];

my$content=get(“file://home/my/table.html" ); 这确实有效(在linux上)。@sid_com-这是一个URI,而不是一个简单的文件路径。可能有合适的语法将Windows文件路径构造为LWP兼容的URI。@sid_com,@David Dorward-刚刚检查了
file://
URI是否在Windows上以及LWP中工作。平坦的道路不会,但这并不奇怪。
<table width=100% align=center cellspacing=0 cellpadding=0 class='raspored_1x2'><tr class=svetlija><td align=center width=20% >02.03.2011 20:30</td><td align=center width=5% >261</td><td align=right width=21% >AUSTRIA W.</td><td align=center width=2% >-</td><td align=left width=21% >STURM</td><td align=right width=8%>
            <a title="dodaj u tiket" href=?option=com_content&amp;task=view&amp;id=24&amp;Itemid=31&amp;sport=Fudbal&amp;a=add&amp;rb=261-5018-2011&amp;dom=AUSTRIA+W.&amp;gost=STURM&amp;tip=1&amp;kvota=1.80>1.80</a></td><td align=right width=8% >
            <a title="dodaj u tiket" href=?option=com_content&amp;task=view&amp;id=24&amp;Itemid=31&amp;sport=Fudbal&amp;a=add&amp;rb=261-5018-2011&amp;dom=AUSTRIA+W.&amp;gost=STURM&amp;tip=X&amp;kvota=3.30>3.30</a></td><td align=right width=8% >
            <a title="dodaj u tiket" href=?option=com_content&amp;task=view&amp;id=24&amp;Itemid=31&amp;sport=Fudbal&amp;a=add&amp;rb=261-5018-2011&amp;dom=AUSTRIA+W.&amp;gost=STURM&amp;tip=2&amp;kvota=3.90>3.90</a></td><td width=7%>
            <a title='Pogledaj kvote' href='javascript:void(0)' onclick="prikaziKvote('261-5018-2011')">
            <img src="http://www.balkanbet.co.rs/site/templates/balkanbet_green/images/arrow_down.gif" class='strelica'>
            </a>
            </td></tr></table>
#!/usr/bin/env perl
use warnings;
use strict;
use HTML::TableExtract;
use Data::Dumper;

my $content =<<EOC; 
<table width=100% align=center cellspacing=0 cellpadding=0 class='raspored_1x2'>
<tr class=svetlija>
<td align=center width=20% >02.03.2011 20:30</td>
<td align=center width=5% >261</td>
<td align=right width=21% >AUSTRIA W.</td>
<td align=center width=2% >-</td>
<td align=left width=21% >STURM</td>
<td align=right width=8%><a title="dodaj u tiket" href=?option=com_content&amp;task=view&amp;id=24&amp;Itemid=31&amp;sport=Fudbal&amp;a=add&amp;rb=261-5018-2011&amp;dom=AUSTRIA+W.&amp;gost=STURM&amp;tip=1&amp;kvota=1.80>1.80</a></td>
<td align=right width=8% ><a title="dodaj u tiket" href=?option=com_content&amp;task=view&amp;id=24&amp;Itemid=31&amp;sport=Fudbal&amp;a=add&amp;rb=261-5018-2011&amp;dom=AUSTRIA+W.&amp;gost=STURM&amp;tip=X&amp;kvota=3.30>3.30</a></td>
<td align=right width=8% ><a title="dodaj u tiket" href=?option=com_content&amp;task=view&amp;id=24&amp;Itemid=31&amp;sport=Fudbal&amp;a=add&amp;rb=261-5018-2011&amp;dom=AUSTRIA+W.&amp;gost=STURM&amp;tip=2&amp;kvota=3.90>3.90</a></td>
<td width=7%><a title='Pogledaj kvote' href='javascript:void(0)' onclick="prikaziKvote('261-5018-2011')"><img src="http://www.balkanbet.co.rs/site/templates /balkanbet_green/images/arrow_down.gif" class='strelica'></a></td>
</tr>
</table>
EOC

my $te = new HTML::TableExtract();

$te->parse( $content );

for my $ts ($te->table_states) { 
    print $ts; 
    for my $row ($ts->rows) { 
        print Dumper $row; 
        # print Dumper $row if (scalar(@$row) == 2); 
    } 
}

# HTML::TableExtract::Table=HASH(0x91e2e0)$VAR1 = [
#          '02.03.2011 20:30',
#          '261',
#          'AUSTRIA W.',
#          '-',
#          'STURM',
#          '1.80',
#          '3.30',
#          '3.90',
#          undef
#        ];