Enlaces de una web con Java

25/Abr/2016 Java 3 Comentarios
Programación en Java

En el ejemplo de hoy vamos a utilizar la librería Jaunt para poder recuperar los enlaces de una web con Java. La idea del ejemplo es utilizar técnicas de screen scraping para poder recuperar una web y analizar su estructura. En este caso en el análisis de la estructura recuperaremos todos los elementos anchor que contenga.

Lo primero de todo será importar la librería Jaunt.

import com.jaunt.*;

La base de la librería es la clase UserAgent la cual simula al agente de usuario o navegador. Mediante esta clase y el método .visit() habremos conseguido establecer conexión con la web de destino.

try {
  UserAgent userAgent = new UserAgent();
  userAgent.visit("http://manualweb.net");						
} catch (ResponseException re) {
  re.printStackTrace();
}

Una vez tenemos la estructura de la página a analizar vamos a apoyarnos en el método findEvery() para indicarle un tipo de elemento HTML, en este caso el anchor.

Es importante ver que el método lo ejecutamos sobre el objeto UserAgent.doc que es el que contiene la página cargada.

Elements links = userAgent.doc.findEvery("");

Los elementos HTML resultado quedan en una colección Elements.

Ya solo nos queda recorrer la colección de elementos. Por cada elemento vamos a recuperar su atributo href. Para ello nos apoyamos en el método .getAt() con el nombre del atributo como parámetro.

for(Element link : links)
  System.out.println(link.getAt("href"));

Vemos que cada elemento HTML es representado mediante la clase Element.

Hay que tener cuidado a la hora de manipular los elementos ya que se puede lanzar la excepción JauntException. Así que deberemos de realizar el pertinente control con una estructura try-catch.

try {
  UserAgent userAgent = new UserAgent();
  userAgent.visit("http://manualweb.net");			
			
  Elements links = userAgent.doc.findEvery("");
  for(Element link : links) System.out.println(link.getAt("href"));					
} catch (ResponseException re) {
  re.printStackTrace();
} catch (JauntException j){
  j.printStackTrace();
}

De esta forma hemos conseguido recuperar los enlaces de una web con Java y la librería Jaunt.

Vídeos sobre Java


3 comentarios en “Enlaces de una web con Java”

Víctor Cuervo

kirk

Buenos días. he intentado usar esta librería, pero me da un error que no llego a entender. añado la librería al proyecto en netbeans, pero cuando la importo parece que no me reconoce las clases. En el arbol de la izquierda sí que aparecen, pero en el «autocompletar» al escribir el «import» no me deja invocar a ninguna en concreto. He añadido el javadoc y no se soluciona. Añado una fotografía donde creo que se ve más claramente a ver si a alguien se le ocurre porque puede ser, porque con jsoup tengo problemas en alguna de las páginas que quiero explorar. A ver si alguien ve q estoy haciendo mal….
https://ibb.co/hXWkMQw

Víctor Cuervo

Aitor Sánchez González

Buenas tardes, no conocía esta librería. Por normal general solía utilizar JSOUP para estos fines. voy a probarla a ver que tal. Un saludo y gracias por el artículo!

Víctor Cuervo

Víctor Cuervo

Aitor ya nos contarás qué tal la experiencia. Saludos.

¿Algo que nos quieras comentar?

Déjanos tu comentario, no te preocupes que tu email no será publicado

*

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.