tutorial studio parser parse java html parsing html-parsing web-scraping

java - studio - jsoup select



¿Qué HTML Parser es el mejor? (3)

Codigo muchos analizadores. Hasta ahora, estaba usando el navegador sin cabeza HtmlUnit para el análisis y la automatización del navegador.

Ahora, quiero separar ambas tareas.

Como el 80% de mi trabajo implica solo un análisis sintáctico, quiero usar un analizador de HTML ligero porque lleva mucho tiempo en HtmlUnit cargar primero una página, luego obtener la fuente y luego analizarla.

Quiero saber qué HTML es el mejor. El analizador sería mejor si está cerca del analizador HtmlUnit.

EDITAR:

Por mejor, quiero al menos las siguientes características:

  1. Velocidad
  2. Facilidad de localizar cualquier HtmlElement por su "id" o "nombre" o "tipo de etiqueta".

Sería bueno para mí si no limpia el sucio código HTML. No necesito limpiar ninguna fuente HTML. Solo necesito una forma más fácil de mover a través de HtmlElements y recopilar datos de ellos.


Lo mejor que he visto hasta ahora es HtmlCleaner :

HtmlCleaner es un analizador HTML de código abierto escrito en Java. El HTML que se encuentra en la Web suele ser sucio, mal formado e inadecuado para su posterior procesamiento. Para cualquier consumo serio de tales documentos, es necesario primero limpiar el desorden y llevar el orden a las etiquetas, atributos y texto ordinario. Para el documento HTML dado, HtmlCleaner reordena elementos individuales y produce XML bien formado. De forma predeterminada, sigue reglas similares que la mayoría de los navegadores web usan para crear el Modelo de Objetos de Documento. Sin embargo, el usuario puede proporcionar una etiqueta personalizada y un conjunto de reglas para filtrar y equilibrar etiquetas.

Con HtmlCleaner puedes localizar cualquier elemento usando XPath.

Para otros analizadores html, vea esta pregunta SO .


Self plug: Acabo de lanzar un nuevo analizador HTML de Java: jsoup . Lo menciono aquí porque creo que hará lo que está buscando.

Su truco de fiesta es una sintaxis del selector de CSS para encontrar elementos, por ejemplo:

String html = "<html><head><title>First parse</title></head>" + "<body><p>Parsed HTML into a doc.</p></body></html>"; Document doc = Jsoup.parse(html); Elements links = doc.select("a"); Element head = doc.select("head").first();

Vea el Selector javadoc para más información.

Este es un proyecto nuevo, ¡así que cualquier idea para mejorar es bienvenida!