Как я могу извлечь данные из HTML-таблиц в Perl?

Это похоже на ToString, и метод пересинтаксического анализа является лучшим способом. Вот код:

XElement copy = XElement.Parse(original.ToString());
5
задан Community 23 May 2017 в 11:46
поделиться

3 ответа

НЕ используйте регулярные выражения для синтаксического анализа HTML. Существует очень большое количество модулей CPAN, которые делают это за вас гораздо более эффективно.

16
ответ дан 18 December 2019 в 06:03
поделиться

Это простой:

my $html = '<tr class="Highlight"><td>Time Played</a></td><td></td><td>Artist</td><td width="1%"></td><td>Title</td><td>Label</td></tr>';
my @stuff = $html =~ />([^<]+)</g;
print join (", ", @stuff), "\n";

См. http://codepad.org/qz9d5Bro , если вы хотите попробовать его запустить.

0
ответ дан 18 December 2019 в 06:03
поделиться

Используйте HTML :: TableExtract . На самом деле.

#!/usr/bin/perl

use strict;
use warnings;

use HTML::TableExtract;
use LWP::Simple;

my $file = 'Table3.htm';
unless ( -e $file ) {
    my $rc = getstore(
        'http://www.ntsb.gov/aviation/Table3.htm',
        $file);
    die "Failed to download document\n" unless $rc == 200;
}

my @headers = qw( Year Fatalities );

my $te = HTML::TableExtract->new(
    headers => \@headers,
    attribs => { id => 'myTable' },
);

$te->parse_file($file);

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

print join("\t", @headers), "\n";

for my $row ($te->rows ) {
    print join("\t", @$row), "\n";
}

Это то, что я имел в виду в другом посте, говоря о "специфических" HTML-парсерах.

Вы могли бы сэкономить много времени, направив свою энергию на чтение документации, а не на то, чтобы бросать регулярные выражения в стену и видеть если застряли.

11
ответ дан 18 December 2019 в 06:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: