Мне нужно преобразовать большой веб-сайт из статического HTML, написанного полностью людьми, в надлежащие реляционные данные. Сначала появляется большое количество таблиц (не обязательно одинаковых для каждой страницы), затем код, подобный этому:
<a name=pidgin><font size=4 color=maroon>Pidgin</font><br></a>
<font size=2 color=teal>Author:</font><br>
<font size=2>Sean Egan</font><br>
<font size=2 color=teal>Version:</font><br>
<font size=2>2.6.8</font><br>
<font size=2><a href="http://pidgin.im/"><br>
<img src="images/homepage.jpg"></a>
</font><br>
<br><br><br>
<a name=psi><font size=4 color=maroon>Psi</font><br></a>
<font size=2 color=teal>Version:</font><br>
<font size=2>0.13</font><br>
<font size=2 color=teal>Screenshots:</font><br>
<a href="images/screenshots/psi/1.jpg">
<img src="images/screenshots/psi/1_s.jpg">
</a>
<a href="images/screenshots/psi/2.jpg">
<img src="images/screenshots/psi/2_s.jpg">
</a><br>
<br><br><br>
, а затем снова несколько таблиц. Я пытался использовать анализатор HTML и искал [имя] (селектор CSS), но некоторые записи всегда терялись: иногда из-за нехорошего HTML, написанного гражданскими лицами, он думает, что некоторые записи находятся внутри каждой другой вместо плоского списка. Прямо сейчас я использую некоторые регулярные выражения Vim, сгруппированные в функцию, которая преобразует этот код в XML, но это тоже не серебряная пуля: большинство выходных файлов плохо сформированы, потому что проскальзывает какой-то HTML.
Итак, мне интересно, какие инструменты существуют для выполнения подобных задач?