在Perl中获取表数据

时间:2013-03-21 18:23:49

标签: perl

我正在尝试获取以下网页中的大表的内容:http://www.basketball-reference.com/players/j/jamesle01/gamelog/2013/。 我想将内容保存到电子表格中。所有这些都是在Perl中完成的。 我真的不确定如何继续这个。任何帮助将不胜感激。

另外,如果你看一下大表,你可以点击CSV,我相信(可能?)会让我更容易获取表数据并将其放入Excel电子表格中。对此有何建议?

由于

2 个答案:

答案 0 :(得分:1)

如果您可以将数据作为CSV格式获取,则可以直接在Excel中打开它,无需转换。

解析HTML很棘手且容易出错,因为构成有效HTML的内容可能非常难看。

如果确实需要编写XLS文件,在阅读CSV之后(例如,使用Text::CSV),您可以使用类似{的内容写入二进制XLS文件格式{3}}

注意,我之前使用过Spreadsheet::WriteExcel - 这很合理。我没有使用Text::CSV的经验。

答案 1 :(得分:1)

在本地获得HTML文件后,您可以使用HTML::TableExtract对其进行解析,并将制表符分隔文件导入Excel:

#!/usr/bin/env perl

use utf8;
use v5.12;
use strict;
use warnings;
use warnings qw(FATAL utf8);
use open qw(:std :utf8);

# see http://www.perl.com/pub/2012/04/perlunicook-standard-preamble.html

use File::Slurp qw( read_file );
use HTML::TableExtract;

my $content = read_file 'index.html', binmode => ':utf8';

my $te = HTML::TableExtract->new(attribs => {id => 'pgl_basic'});

$te->parse($content);
my ($table) = $te->tables;

for my $row ($table->rows) {
    next if $row->[0] eq 'Rk';
    print join("\t", map { defined($_) ? $_ : '' } @$row), "\n";
}