2011-05-24 10 views
14

Así que aquí está el desafío ... Necesito crear HTML limpio a partir de páginas web aleatorias en la naturaleza. Mi objetivo es leer en una página y pasarla a una biblioteca que, a su vez, me devuelve el HTML perfectamente formado.Biblioteca de Java para limpiar HTML al igual que un navegador

No suena tan difícil, ¿verdad? Después de todo, todos los navegadores del mercado abordan eficazmente el desafío del HTML malformado y lo convierten en algo capaz de renderizar con casi cada carga de página. Cada uno tiene su propio algoritmo ligeramente particular para limpiar los contenidos (ejem. Para HTML < 5), pero tienden a hacer un muy buen trabajo al capturar lo que me gusta llamar la intención del autor. Entonces, ¿por qué no puedo encontrar una buena biblioteca de Java para esta misma tarea?

Una cosa para mencionar es que no me interesa en absoluto analizar el HTML como XML. Descubrí que las bibliotecas como NekoHTML, TagSoup, HtmlCleaner y JTidy (por nombrar algunas) están más enfocadas en resolver el problema de convertir a HTML en XML válido, y en el proceso, pierden de vista cómo el pobre- el documento formateado debe ser reestructurado. Con el desagradable HTML, con frecuencia no capturan la intención del autor y escuchan documentos que rinden de forma bastante diferente a la fuente original. Y para este proyecto, es de la mayor importancia que los dos documentos rindan de manera similar.

Soy bastante aficionado a Jericho HTML, pero no parece ser el candidato ideal para este trabajo ... al menos no sin mucho esfuerzo de mi parte. Además, las dependencias nativas son un no-go, por lo que el analizador de mozilla está fuera.

¿Alguien me puede ayudar en mi búsqueda del analizador HTML perfecto? ¡Gracias por adelantado!

+1

Definame HTML mal formateado ... ¿se refiere a las sangrías correctas o simplemente al HTML malformado en general? El último es algo mucho más grande en alcance. –

+0

Definitivamente estamos hablando de esto último. Para este proyecto, tengo que acceder a una página web, aplicar una serie de transformaciones y luego mostrar el resultado al usuario. Si el formato/diseño es significativamente diferente al HTML preprocesado, estoy en problemas. – stevevls

Respuesta

6

JSoup diría

Véase también

+0

Gracias por el enlace a la otra pregunta. Ya lo había visto antes, y seguí algunos de los enlaces, aunque me fui con la conclusión de que mi problema aquí es ligeramente diferente. Estoy evaluando JSoup ahora, y se ve muy prometedor. Me había salteado anteriormente b/c el nombre estaba tan cerca de TagSoup que pensé que eran lo mismo. ;) – stevevls

+2

Después de un día de usarlo, puedo decir oficialmente que esta biblioteca se mece. ¡Muchas gracias! – stevevls

+0

Sí, realmente es genial :) .you are welcome –

0
+1

Gracias, pero desafortunadamente esa biblioteca cae en el campo de "vamos a convertir HTML en XML". Ya lo evalué y lo arrojé b/c me estaba dando HTML que se procesaba de manera diferente a la fuente. – stevevls

1

He usado HTML Tidy en el pasado.

+0

Huh ... parece que lanzaron una versión en 2009 por primera vez en 8 años. También he usado Tidy en el pasado, pero desde entonces no he estado tan impresionado. Tal vez hace unos cinco años, comencé un proyecto (esta vez donde estaba analizando HTML -> XML) y terminé usando NekoHTML (que ahora también está muerto). – stevevls

Cuestiones relacionadas