Как разобрать неверный HTML в python
Мне нужно просмотреть дерево DOM проанализированного HTML-документа.
Я использую uTidyLib перед разбором строки с помощью lxml
a = tidy.parseString(html_code, options)
dom = etree.fromstring(str (a))
Иногда я получаю сообщение об ошибке, кажется, что tidylib не в состоянии восстановить неверный html.
как я могу анализировать каждый HTML файл без получения ошибки (синтаксический анализ только некоторых частей файлов, которые не могут быть восстановлены)?
Ответы
Ответ 1
Beautiful Soup отлично справляется с неверным/сломанным HTML
>>> from BeautifulSoup import BeautifulSoup
>>> soup = BeautifulSoup("<[email protected])($*><body><table <tr><td>hi</tr></td></body><html")
>>> print soup.prettify()
<htm>
<body>
<table>
<tr>
<td>
hi
</td>
</tr>
</table>
</body>
</htm>
Ответ 2
Поскольку вы уже используете lxml, попробовали ли вы lxml ElementSoup модуль?
Если ElementSoup не может восстановить HTML, вам, вероятно, придется сначала применить свои собственные фильтры, основанные на ваших собственных наблюдениях за тем, как данные нарушены.