【问题标题】:What is the best way to parse HTML from a Rich Text Editor in Perl?在 Perl 中从富文本编辑器解析 HTML 的最佳方法是什么?
【发布时间】:2010-09-20 00:54:29
【问题描述】:

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

【问题讨论】:

    标签: html perl module tidy rich-text-editor


    【解决方案1】:

    两件事:

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

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

    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);
    

    【讨论】:

    • 这很可能会死锁(在写入 FROM_TIDY 时会出现 tidy 阻塞,而在写入 TO_TIDY 时会阻塞 perl)。
    • 不。 tidy 在解析之前读取整个文件,然后将整个文件写出。
    猜你喜欢
    • 2010-09-30
    • 1970-01-01
    • 2017-04-13
    • 2020-03-14
    • 1970-01-01
    相关资源
    最近更新 更多