Pregunta

Estoy intentando extraer algunos datos de varias páginas HTML usando un programa Python.Desafortunadamente, algunas de estas páginas contienen datos ingresados ​​por el usuario que ocasionalmente tienen errores "ligeros", es decir, etiquetas que no coinciden.

¿Existe una buena manera de hacer que xml.dom de Python intente corregir errores o algo por el estilo?Alternativamente, ¿existe una mejor manera de extraer datos de páginas HTML que puedan contener errores?

¿Fue útil?

Solución

Se puede usar HTML Tidy para limpiar, o sopa hermosa a analizar. Podría ser que usted tiene que guardar el resultado en un archivo temporal, pero debería funcionar.

Saludos,

Otros consejos

Solía ​​​​usar BeautifulSoup para este tipo de tareas, pero ahora he cambiado a HTML5lib (http://code.google.com/p/html5lib/) que funciona bien en muchos casos donde falla BeautifulSoup

otra alternativa es usar "Sopa de elementos" (http://effbot.org/zone/element-soup.htm) que es un contenedor para Beautiful Soup usando ElementTree

lxml hace un trabajo decente en el análisis de HTML válido.

De acuerdo con su documentación Hermosa sopa y html5lib veces mejor desempeño en función de la entrada. Con lxml puede elegir qué programa de análisis a utilizar, y acceder a ellos a través de una API unificada.

Si jython es aceptable para usted, tagsoup es muy bueno en el análisis basura -. Si lo es, me encontré con las bibliotecas JDOM mucho más fácil de usar que otras alternativas XML

Este es un fragmento de una maqueta de demostración que ver con pantalla de raspado del planificador de viajes de TFL:

 private Document getRoutePage(HashMap params) throws Exception {
        String uri = "http://journeyplanner.tfl.gov.uk/bcl/XSLT_TRIP_REQUEST2";
        HttpWrapper hw = new HttpWrapper();
        String page = hw.urlEncPost(uri, params);
        SAXBuilder builder = new SAXBuilder("org.ccil.cowan.tagsoup.Parser");
        Reader pageReader = new StringReader(page);
        return builder.build(pageReader);
    }
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top