Python xml.dom y XML incorrecto
-
18-09-2019 - |
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?
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
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); }