2008-10-30 42 views
2

是否有一個Perl模塊,可以採取錯誤的HTML(如從微軟Word複製)並將其解析爲格式良好的HTML?我曾看過HTML :: Tidy,但已獲得horrible reviews on CPAN。我們有一個自定義遺留模塊,它基本上是tidy命令行版本的包裝器(它似乎幾乎是HTML :: Tidy),但它將文件寫入磁盤並將其讀回,這可能是一個很大的性能罰款。當然,用Perl的真棒文本解析能力,還有更好的方法可以做到這一點嗎?從Perl中的富文本編輯器解析HTML的最佳方式是什麼?

回答

1

兩件事情:

1)真的是不tidy的選擇,因爲它爲大多數人的工作。命令行工具是否存在某些不適合您的行爲?也許如果你提出了一個例子,說明爲什麼它不合格,我們可以更好地理解這個問題。

2)對於性能,你可能會考慮修改您的包裝上調用整齊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); 
+0

這很可能導致死鎖(有整潔阻塞到FROM_TIDY和perl阻塞寫上TO_TIDY)。 – ysth 2008-10-30 23:42:20

相關問題