Печать содержимого таблицы с использованием Html::TreeBuilder::XPath
Я хочу извлечь все таблицы из HTML-файла и распечатать их содержимое следующим образом, каждая ячейка разделена \t
каждая строка разделена \n
и каждая таблица разделена \n\n
, Ниже приведен мой сценарий, когда я изменил его на findvalues для tr, тогда весь tr вставляется как один элемент, и я даже попробовал другие методы, такие как findnodes_as_strings ($path), я хочу изменить его в вышеупомянутой структуре.
use strict;
use warnings;
use HTML::TreeBuilder::XPath;
my $tree= HTML::TreeBuilder::XPath->new;
$tree->parse_file( "html.html");
my @values=$tree->findvalues(q{//table//tr//td});
print $_, "\n" foreach(@values);
1 ответ
Решение
Вам нужно обрабатывать каждую таблицу отдельно, то же самое для строк:
foreach my $table ( $tree->findnodes('//table') ) {
foreach my $row ( $table->findnodes('.//tr') ) {
my @cells = $row->findvalues('.//td');
print join("\t", @cells), "\n";
}
print "\n";
}
Конечно, это решение только для простых таблиц (подумайте о столбцах, th, таблице внутри таблицы и т. Д.)