Каков наилучший способ разбора HTML из Rich Text Editor в Perl? - PullRequest
2 голосов
/ 30 октября 2008

Существует ли какой-нибудь модуль Perl, который может принять плохой HTML (например, что скопировано из Microsoft Word) и проанализировать его в красиво отформатированном HTML ? Я посмотрел на HTML :: Tidy , но он получил ужасных отзывов о CPAN . У нас есть собственный устаревший модуль, который в основном является оболочкой для версии tidy для командной строки (которая, похоже, в значительной степени совпадает с HTML :: Tidy), но он записывает файлы на диск и читает их обратно, что может быть большой производительностью штраф. Конечно, с удивительными возможностями Perl для разбора текста, есть лучший способ сделать это правильно?

1 Ответ

1 голос
/ 30 октября 2008

Две вещи:

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