HTML es el núcleo de la WEB Todas las páginas que ve en Internet son HTML, ya sean generadas dinámicamente por JavaScript, JSP, PHP, ASP u otras tecnologías WEB. Su navegador analizará el HTML y lo renderizará por usted. Pero, ¿qué sucede si necesita analizar el documento HTML usted mismo en un programa Java y encontrar ciertos elementos, etiquetas, atributos o verificar si existe un elemento específico? Si ha estado programando en Java durante muchos años, creo que debe haber intentado analizar XML y haber utilizado analizadores como DOM o SAX, pero es muy probable que nunca haya realizado ningún trabajo de análisis de HTML. Lo que es aún más irónico es que en las aplicaciones Java, hay muy pocas ocasiones en las que es necesario analizar documentos HTML, y esto no incluye Servlets u otras tecnologías WEB de Java. Lo peor es que el núcleo JDK no incluye bibliotecas HTTP o HTML, al menos yo no las conozco. Esta es la razón por la que cuando se trata de analizar archivos HTML, muchos programadores de Java primero deben buscar en Google para ver cómo extraer una etiqueta HTML en Java. Cuando tuve esta necesidad, pensé que habría algunas bibliotecas de código abierto que podrían lograrlo, pero no esperaba que hubiera una biblioteca tan interesante y completamente funcional como JSoup. No sólo admite la lectura y el análisis de documentos HTML, sino que también le permite extraer cualquier elemento de los archivos HTML, así como sus atributos y propiedades CSS, y también puede modificarlos. Con JSoup puedes hacer casi cualquier cosa con documentos HTML. Veremos un ejemplo de cómo descargar y analizar un archivo HTML desde la página de inicio de Google o cualquier URL en Java.
¿Qué es la biblioteca JSoup?
Jsoup es una biblioteca Java de código abierto que se puede utilizar para procesar HTML en aplicaciones prácticas. Proporciona una API muy conveniente para la extracción y modificación de datos, aprovechando al máximo las ventajas de los métodos de estilo DOM, CSS y jquery. Jsoup implementa la especificación WAHTWG HTML5 y el DOM que analiza desde HTML es exactamente el mismo que analizan los navegadores modernos como Chrome y Firefox. Estas son algunas características útiles de la biblioteca Jsoup:
1.Jsoup puede obtener y analizar HTML desde URL, archivo o cadena.
2.Jsoup puede buscar y extraer datos mediante recorrido DOM o selectores CSS.
3. Puede utilizar Jsoup para modificar elementos, atributos y texto HTML.
4.Jsoup garantiza que el contenido enviado por los usuarios esté limpio a través de una lista blanca segura para evitar ataques XSS.
5.Jsoup también puede generar HTML ordenado.
Jsoup está diseñado para manejar todo tipo de HTML diferente que aparece en la vida real, incluido HTML correcto y válido, así como colecciones de etiquetas incompletas e inválidas. Una de las principales ventajas competitivas de Jsoup es su solidez.
Usando Jsoup para el análisis de HTML en Java
En este tutorial de análisis de HTML de Java, veremos tres ejemplos diferentes del uso de Jsoup para analizar y recorrer HTML en Java. En el primer ejemplo, analizaremos una cadena HTML, cuyo contenido es una etiqueta compuesta de cadenas literales en Java. En el segundo ejemplo, descargaremos el documento HTML de la WEB y, en el tercer ejemplo, cargaremos un archivo de muestra HTML login.html para analizarlo. Este archivo es un ejemplo de un documento HTML. Contiene una etiqueta de título y una etiqueta div dentro del cuerpo, que contiene un formulario. Tiene etiquetas de entrada para obtener nombres de usuario y contraseñas, así como botones de envío y reinicio para el siguiente paso. Es HTML correcto y válido, es decir, todas las etiquetas y atributos están cerrados correctamente. Aquí está nuestro archivo HTML de muestra:
Copie el código de código de la siguiente manera:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transicional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<cabeza>
<meta http-equiv="Tipo de contenido" content="text/html; charset=ISO-8859-1">
<title>Página de inicio de sesión</title>
</cabeza>
<cuerpo>
<div id="iniciar sesión" >
<formulario acción="iniciar sesión.do">
Nombre de usuario: <input id="nombre de usuario" tipo="texto" /><br>
Contraseña: <input id="contraseña" tipo="contraseña" /><br>
<entrada id="enviar" tipo="enviar" />
<entrada id="restablecer" tipo="restablecer" />
</formulario>
</div>
</cuerpo>
</html>
Usar Jsoup para analizar HTML es muy simple, solo necesita llamar a su método estático Jsoup.parse() y pasarle su cadena HTML. Jsoup proporciona múltiples métodos parse() sobrecargados, que pueden leer archivos HTML a partir de cadenas, archivos, URI, URL e incluso InputStreams. Si no se trata de codificación UTF-8, también puede especificar la codificación de caracteres para que el archivo HTML se pueda leer correctamente. A continuación se muestra una lista completa de los métodos de análisis HTML en la biblioteca Jsoup. El método parse(String html) analiza el HTML de entrada en un nuevo documento. En Jsoup, Document hereda de Element, que a su vez hereda de Node. El mismo TextNode también hereda de Node. Siempre que pase una cadena no nula, definitivamente obtendrá un análisis exitoso y significativo y obtendrá un documento que contiene elementos de encabezado y cuerpo. Una vez que obtenga este Documento, puede llamar a los métodos apropiados en Documento y sus clases principales Elemento y Nodo para obtener los datos que desea.
Programa Java que analiza documentos HTML.
A continuación se muestra un programa Java completo que analiza cadenas HTML, archivos HTML descargados de Internet y archivos HTML en el sistema de archivos local. Puede utilizar Eclipse IDE u otro IDE o incluso comandos para ejecutar este programa. En Eclipse, es muy simple. Simplemente copie este código, cree un nuevo proyecto Java, haga clic derecho en el paquete src y péguelo. Eclipse creará el paquete correcto y el archivo fuente Java con el mismo nombre, por lo que la carga de trabajo es mínima. Si ya tiene un proyecto de muestra de Java, solo se requiere un paso. El siguiente programa Java muestra tres ejemplos diferentes de análisis y recorrido de archivos HTML. En el primer ejemplo, analizamos directamente una cadena con contenido HTML, en el segundo ejemplo analizamos un archivo HTML descargado desde una URL y en el tercer ejemplo cargamos un documento HTML desde el sistema de archivos local y lo analizamos. El método de análisis se utiliza tanto en el primer como en el tercer ejemplo para obtener un objeto Documento, que puede consultar para extraer cualquier valor de etiqueta o valor de atributo. En el segundo ejemplo, utilizamos el método Jsoup.connect, que creará una conexión URL, descargará el HTML y lo analizará. Este método también devolverá un Documento, que se puede utilizar para consultas posteriores y obtener el valor de una etiqueta o atributo.
Copie el código de código de la siguiente manera:
importar java.io.IOException;
importar org.jsoup.Jsoup;
importar org.jsoup.nodes.Document;
importar org.jsoup.nodes.Element;
/**
[*] Programa Java para analizar/leer documentos HTML desde un archivo usando la biblioteca Jsoup.
[*] Jsoup es una biblioteca de código abierto que permite a los desarrolladores de Java analizar HTML
[*] archivos y extraer elementos, manipular datos, cambiar estilo usando DOM, CSS y
[*] Método similar a JQuery.
[*]
[*] @autor Javin Pablo
[*]/
HTMLParser de clase pública{
público estático vacío principal (String args []) {
// Analizar cadena HTML usando la biblioteca JSoup
Cadena HTMLSTring = "<!DOCTYPE html>"
+ "<html>"
+ "<cabeza>"
+ "<título>Ejemplo de JSoup</título>"
+ "</cabeza>"
+ "<cuerpo>"
+ "|[b]HolaMundo[/b]"
+ ""
+ "</cuerpo>"
+ "</html>";
Documento html = Jsoup.parse(HTMLSTring);
Título de cadena = html.title();
Cadena h1 = html.body().getElementsByTag("h1").text();
System.out.println("Ingrese cadena HTML en JSoup:" + HTMLSTring);
System.out.println("Después del análisis, Título: " + título);
System.out.println("Después del análisis, encabezado: " + h1);
// Ejemplo 2 de JSoup: leer una página HTML desde una URL
Documento de documento;
intentar {
doc = Jsoup.connect("http://google.com/").get();
título = doc.título();
} captura (IOException e) {
e.printStackTrace();
}
System.out.println("Jsoup puede leer la página HTML desde la URL, título: " + título);
// Ejemplo 3 de JSoup: análisis de un archivo HTML en Java
//Documento htmlFile = Jsoup.parse("login.html", "ISO-8859-1");
Documento htmlFile = nulo;
intentar {
htmlFile = Jsoup.parse(nuevo archivo("login.html"), "ISO-8859-1");
} captura (IOException e) {
// TODO Bloque de captura generado automáticamente
e.printStackTrace();
} // bien
título = htmlFile.title();
Elemento div = htmlFile.getElementById("iniciar sesión");
String cssClass = div.className(); // obteniendo el elemento HTML del formulario de clase
System.out.println("Jsoup también puede analizar archivos HTML directamente");
System.out.println("título: " + título);
System.out.println("clase de etiqueta div: " + cssClass);
}
}
Producción:
Copie el código de código de la siguiente manera:
Ingrese una cadena HTML en JSoup:<!DOCTYPE html><html><head><title>Ejemplo de JSoup</title></head><body><table><tr><td><h1>HelloWorld</h1> </tr></table></body></html>
Después del análisis, Título: Ejemplo de JSoup
Después del análisis, título: HelloWorld
Jsoup puede leer la página HTML desde la URL, título: Google
Jsoup también puede analizar el título del archivo HTML directamente: Página de inicio de sesión
clase de etiqueta div: simple
La ventaja de Jsoup es que es muy robusto. El analizador HTML de Jsoup analizará el HTML que usted proporcione de la manera más limpia posible, independientemente de si el HTML está bien formado. Puede manejar errores como etiquetas no cerradas (p. ej., Java <p>Scala a <p>JavaScala), etiquetas implícitas (p. ej., un |Java is Great envuelto en |), y siempre puede crear una estructura de documento (HTML). incluyendo cabeza y cuerpo, y sólo se incluirán los elementos correctos en la cabeza). Así es como se analiza HTML en Java. Jsoup es una excelente y robusta biblioteca de código abierto que hace que sea muy sencillo leer documentos HTML, fragmentos de cuerpo, cadenas HTML y analizar contenido HTML directamente desde la WEB. En este artículo, aprendimos cómo obtener una etiqueta HTML específica en Java, ya que en el primer ejemplo extrajimos el valor del título y las etiquetas H1 en texto, y en el tercer ejemplo aprendimos cómo obtenerlo mediante Extraer propiedades CSS a obtener valores de propiedad de etiquetas HTML. Además del potente método html.body().getElementsByTag("h1").text() de estilo jQuery, también puede extraer etiquetas HTML arbitrarias y también proporciona funciones como Document.title() y Element.className( ) Método conveniente, puede obtener rápidamente el título y la clase CSS. Espero que te diviertas con JSoup y pronto veremos más ejemplos de esta API.