HTML::TableExtract с таблицей внутри таблицы

У меня есть небольшой скрипт, который я использую для манипулирования кодом с удаленного URL (код является отдельным). Страница руководства для HTML::TableExtract содержит следующий раздел кода, относящийся к выполнению извлечения таблицы в таблице, т.е.

$te = new HTML::TableExtract
      (
       headers => [qw(Summary Region)],
       chain   => [
                   { depth => 0, count => 2 },
                   { headers => [qw(Part Qty Cost)] }
                  ],
      );

Мой код содержит это, то есть:

use HTML::TableExtract;
use strict;
use warnings;

my $te = new HTML::TableExtract
      (
       headers => [qw(Incident Date Time Location Description)],
       chain   => [
                   { depth => 0, count => 2 },
                   { headers => [qw(Unit DIS ENR ONS LEF ARR BUS REM COM)] }
                  ],
      );

$te->parse_file('data.html');

Тем не менее, запуск это дает мне это:

Can't locate object method "chain" via package "HTML::TableExtract" at /usr/lib/perl5/HTML/Parser.pm line 80.

Я что-то упускаю? (Если у кого-то есть лучший способ извлечь таблицу из таблицы (при печати информации обоими я весь слух)

1 ответ

Решение

Я не видел никаких документов о chain метод в документе HTML::TableExtract, Может быть, вы используете просроченную версию?

Но согласно документу, вы можете сделать это, используя depth а также count атрибуты:

$te = HTML::TableExtract->new( 
                              headers => [qw(Unit DIS ENR ONS LEF ARR BUS REM COM)], 
                              depth => 1, 
                              count => 1 
                             );
$te->parse($html_string);

глубина: укажите, как встраивать в другие таблицы ваши интересующие таблицы. Таблицы верхнего уровня в документе HTML имеют глубину 0, таблицы внутри таблиц верхнего уровня имеют глубину 1 и т. Д.

количество: укажите, какая таблица в каждой интересующей вас глубине, начиная с 0.

В твоем случае depth а также count должно быть как 1.

Другие вопросы по тегам