0

次のWebページで大きなテーブルの内容を取得しようとしています: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 に答える