【问题标题】:How to automatically edit html tables with perl?如何使用 perl 自动编辑 html 表?
【发布时间】: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


【解决方案1】:

你有没有尝试修改内容,之后使用$table->tree->as_HTML

【讨论】:

  • 这样可以正常工作(除非必须保留 HTML 源的格式)。
  • @weismat 我试图按照 html::tableExtract 的示例执行此操作,但无法执行此操作。我是 perl 的新手。你能给我一个小例子并解释一下吗?
  • @David-SkyMesh 我需要保留的html格式,只需要根据我的标准删除一些行。
  • @weismat 我已经更新了代码并上传了一个示例 html 文件,我需要根据第一列的某些标准更改或删除行。非常感谢您的帮助。
  • 你会使用 $te->tree->as_HTML。
猜你喜欢
  • 2015-10-11
  • 1970-01-01
  • 1970-01-01
  • 2012-10-16
  • 1970-01-01
  • 2010-10-31
  • 1970-01-01
  • 1970-01-01
  • 2015-12-22
相关资源
最近更新 更多