Разбор всей таблицы в Perl с использованием TableExtract - PullRequest
0 голосов
/ 02 марта 2011

Я хочу проанализировать всю таблицу, используя TableExtract в Pearl.Вот что я написал в 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":

<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>

Когда я запускаю сценарий Perl, ничего не происходит.Кто-нибудь знает, в чем проблема?

Ответы [ 2 ]

1 голос
/ 02 марта 2011
#!/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
#        ];
0 голосов
/ 02 марта 2011

Могут быть и другие проблемы, но первое, что приходит на ум, это то, что вы используете LWP и передаете ему путь к файлу, а не URL.

Возможно, вы хотите File::Slurp вместоLWP::Simple (обратите внимание, что у него другой API, поэтому вам нужно заменить get())

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...