【发布时间】:2012-04-12 21:07:28
【问题描述】:
我有大量的大型 html 表格(大约 1000 个),其中需要编辑某些单元格或行。所有所需表格的编辑本身都是相同的,因此可以轻松实现自动化。所以我一直在寻找一种使用 perl 的方法。我发现 html::TableExtract 对于从表中获取数据非常有用,但我找不到编辑它们并将它们放回 html 的方法。如果有人帮助我提供一些示例代码,我将不胜感激。
编辑:我试图解析的文件就像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;
【问题讨论】:
-
到目前为止你尝试了什么?
-
为什么不能以正确的格式存储数据?例如。在 SQL 数据库中。
-
问题是表格是由预测算法生成的,现在我需要在不更改算法的情况下在这些表格上添加一层额外的过滤器。希望我能说清楚。
-
如果我们规定只能修改指定的表格单元格(例如:保留 HTML 源格式),这将成为一个有趣的问题。我会尝试采用类似 SAX 的解析方法来访问和编辑适当的节点,然后将其余部分不受影响地传回。
-
你能开始“使用严格吗?”和“使用警告”?
标签: html perl html-table