Enlaces de una web con Java

25/Abr/2016 Java 2 Comentarios

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.

  1. 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.

  1. try {
  2. UserAgent userAgent = new UserAgent();
  3. userAgent.visit("http://manualweb.net");
  4. } catch (ResponseException re) {
  5. re.printStackTrace();
  6. }

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.

  1. Elements links = userAgent.doc.findEvery("<a>");

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.

  1. for(Element link : links)
  2. 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.

  1. try {
  2. UserAgent userAgent = new UserAgent();
  3. userAgent.visit("http://manualweb.net");
  4.  
  5. Elements links = userAgent.doc.findEvery("<a>");
  6. for(Element link : links) System.out.println(link.getAt("href"));
  7. } catch (ResponseException re) {
  8. re.printStackTrace();
  9. } catch (JauntException j){
  10. j.printStackTrace();
  11. }

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

Vídeos sobre Java


2 comentarios en “Enlaces de una web con Java”

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.

Responder a Víctor Cuervo Cancelar respuesta

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

*

*