Cómo analizar HTML con formato incorrecto en Python

Necesito buscar el árbol DOM de un documento HTML analizado.

Estoy usando uTidyLib antes de analizar la cadena con lxml

a = tidy.parseString (html_code, options) dom = etree.fromstring (str (a))

A veces me sale un error, parece que tidylib no puede reparar html con formato incorrecto.

¿Cómo puedo analizar todos los archivos HTML sin recibir un error (analizar solo algunas partes de los archivos que no se pueden reparar)?

Beautiful Soup hace un buen trabajo con HTML inválido / roto

>>> from BeautifulSoup import BeautifulSoup >>> soup = BeautifulSoup("
hi
>> print soup.prettify()
hi

Dado que ya está utilizando lxml, ¿ha probado el módulo ElementSoup de lxml ?

Si ElementSoup no puede reparar el HTML, es probable que primero deba aplicar sus propios filtros basados ​​en sus propias observaciones de cómo se rompen los datos.