2

是否有一个 Perl 模块可以获取错误的 HTML(例如从 Microsoft Word 复制的内容)并将其解析为格式良好的 HTML?我看过HTML::Tidy,但它在 CPAN 上得到了可怕的评论。我们有一个自定义的遗留模块,它基本上是命令行版本 tidy 的包装器(这似乎与 HTML::Tidy 差不多),但它会将文件写入磁盘并将它们读回,这可能是一个很大的性能惩罚。当然,凭借 Perl 令人敬畏的文本解析能力,还有更好的方法来做到这一点吗?

4

1 回答 1

1

两件事情:

1) 确实没有tidy的替代品,因为它对大多数人都有效。命令行工具的某些行为是否不适合您?也许如果你举一个例子说明为什么它不适合鼻烟,我们可以更好地理解这个问题。

2)关于性能,您可以考虑修改包装器以调用open2tidy 以避免磁盘往返:

use IPC::Open2;

my $pid = open2(\*FROM_TIDY, \*TO_TIDY, '/usr/bin/tidy')
    or die "couldn't open";

# give tidy our html and close the handle to tell it we're done
print(TO_TIDY $html_string);
close(TO_TIDY);

# read in the tidy html
while (<FROM_TIDY>) {
    print;
}
close(FROM_TIDY);
于 2008-10-30T18:22:20.113 回答