Как разобрать недопустимый HTML с помощью Perl?

Веду базу статей с форматированием HTML. К сожалению, редакторы, которые писали статьи, не знали правильного HTML, поэтому они часто писали такие вещи, как:

<div class="highlight"><html><head></head><body><p>Note that...</p></html></div>

Я попытался использовать HTML::TreeBuilderдля синтаксического анализа этого HTML, но после его синтаксического анализа и дампа результирующего дерева все элементы между <div class="highlight">...</div>исчезли. У меня осталось только <div class="highlight"></div>.

Редакторы также часто делали такие вещи, как:

<div class="article"><style>@font-face {   font-family: "Cambria"; }</style>Article starts here</div>

Разбор этого с помощью HTML::TreeBuilderснова приводит к пустому <div class="article"></div>.

Любые идеи, как подойти к этому сломанному HTML и на самом деле понять его смысл?

6
задан bodacydo 4 July 2012 в 21:12
поделиться