0

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

另外,如果您查看大表上方,您可以单击 CSV,我相信(可能?)这将使我更容易获取表格数据并将其放入 Excel 电子表格。对此有何建议?

谢谢

4

2 回答 2

1

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

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

如果您确实需要编写 XLS 文件,则在读取 CSV 后(例如,通过使用Text::CSV ),您可以使用Spreadsheet::WriteExcel之类的东西写入二进制 XLS 文件格式

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

于 2013-03-21T18:29:17.817 回答
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";
}
于 2013-03-21T19:15:11.147 回答