使用TableExtract在Perl中解析整个表
我想使用Pearl中的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
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&task=view&id=24&Itemid=31&sport=Fudbal&a=add&rb=261-5018-2011&dom=AUSTRIA+W.&gost=STURM&tip=1&kvota=1.80>1.80</a></td><td align=right width=8% >
<a title="dodaj u tiket" href=?option=com_content&task=view&id=24&Itemid=31&sport=Fudbal&a=add&rb=261-5018-2011&dom=AUSTRIA+W.&gost=STURM&tip=X&kvota=3.30>3.30</a></td><td align=right width=8% >
<a title="dodaj u tiket" href=?option=com_content&task=view&id=24&Itemid=31&sport=Fudbal&a=add&rb=261-5018-2011&dom=AUSTRIA+W.&gost=STURM&tip=2&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&task=view&id=24&Itemid=31&sport=Fudbal&a=add&rb=261-5018-2011&dom=AUSTRIA+W.&gost=STURM&tip=1&kvota=1.80>1.80</a></td>
<td align=right width=8% ><a title="dodaj u tiket" href=?option=com_content&task=view&id=24&Itemid=31&sport=Fudbal&a=add&rb=261-5018-2011&dom=AUSTRIA+W.&gost=STURM&tip=X&kvota=3.30>3.30</a></td>
<td align=right width=8% ><a title="dodaj u tiket" href=?option=com_content&task=view&id=24&Itemid=31&sport=Fudbal&a=add&rb=261-5018-2011&dom=AUSTRIA+W.&gost=STURM&tip=2&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
# ];