Как автоматически редактировать HTML-таблицы с Perl? - PullRequest
2 голосов
/ 29 марта 2012

У меня есть большое количество больших HTML-таблиц (около 1000), в которых необходимо редактировать определенные ячейки или строки ... само редактирование одинаково для всех необходимых таблиц, поэтому его можно легко автоматизировать.Поэтому я искал способ сделать это с помощью Perl.Я обнаружил, что html :: TableExtract очень полезен для извлечения данных из таблицы, но я не могу найти способ отредактировать их и вернуть обратно в html.Если кто-нибудь поможет мне с небольшим примером кода, я буду благодарен.

edit: файлы, которые я пытаюсь проанализировать, похожи на http://pastehtml.com/view/bsyxg5y2t.html Мне нужно отредактировать некоторую ячейку или удалить целые строки в соответствии сзначение первого столбца.

Я пытался использовать HTML :: TableExtract, но теперь застрял с ошибкой:

"Не могу благословить нереферентное значение в C: /strawberry / perl / site / lib / HTML / ElementTable .pm строка 431. "

Код выглядит следующим образом:

use strict;
use warnings;
use HTML::TableExtract 'tree'; 
use YAML;
print "starting \n";
my @headers = (qw(mRNA Chromosome));
$te = HTML::TableExtract->new(slice_columns=> 1,
                              keep_html => 0,
              headers => \@headers );
$te->parse_file('hsa-let-7a-2-3p-3.html');
foreach my $ts ($te->tables) {
  print "======= Table (", join(',', $ts->coords), ") =======\n";
  print join("\t", @headers), "\n";

  foreach my $row ($ts->rows) {
    print join(',', @$row), "\n";
  }
}

Примечание. Работает, если я изменяю его наиспользуйте HTML :: TableExtract, чтобы изменить ячейку, я попробовал это, но столкнулся с той же ошибкой при использовании дерева

$table_tree = $ts->tree;
$table_tree->cell(2,2)->replace_content('change here');
$table_html = $table_tree->as_HTML;
$table_text = $table_tree->as_text;
$document_tree = $te->tree;
$document_html = $document_tree->as_HTML;
print $document_html;

1 Ответ

0 голосов
/ 29 марта 2012

Вы пытались изменить содержимое и впоследствии использовать $table->tree->as_HTML?

...