Я хотел бы иметь в виду две вещи при использовании HTML :: TableExtract с плохо отформатированным HTML в вашем вопросе
- используйте
keep_html=>1
в конструкторе HTML :: TableExtract
- используйте регулярное выражение для тщательного удаления
</B>
,
Вот некоторый код на Perl, который я написал для удаления </B>
из ячеек таблицы, но учтите, что это может изменить правильно отформатированный HTML на плохо отформатированный HTML, если вы будете слепо применять его во всех случаях.
#!/usr/bin/perl
use strict;
use warnings;
use HTML::TableExtract;
my($f) = @ARGV;
open F,$f;
my $html = join '',<F>;
close F;
### your html didn't include headers, so I added a first table row with td text, time a b c d e f, to help HTML::TableExtract find the table in file, $f
my $te = HTML::TableExtract->new(
keep_html=>1,
headers=>[qw/ time a b c d e f/]);
$te->parse($html);
for my $ts($te->tables)
{
print "Table(",join(',',$ts->coords),":\n";
for my $row ($ts->rows)
{
for my $cell (@$row)
{
next unless $cell;
## maybe add $ at end of regex or other test here to make sure valid cases of <B>...</B> are not affected
$cell =~ s/<\/B> //i;
print $cell."\n";
}
}
}