Jsoup un parser de html simplificado

Ya hace y explicaba cómo se podía recoger el contenido de una página web que no tenía webservice y por el contrario solo necesitábamos una pequeña parte. Era en este post con el html parser de java. También tendrás que vigilar que lo recogido no tenga derechos de autor o al menos poner su fuente.

Hace tiempo se explicaba como hacer scrapping de una pagina web donde es necesario recoger una parte de datos pero no se tiene los datos en un formato libre y legible. Hablábamos de HTMLParser, ahora usaremos una buena evolución.

JSOUP permite recoger las partes deseadas como lo haríamos con jquery. Por este motivo si hacemos $(‘#content’).text() em Jsoup podremos hacer lo mismo con javascript.

Realmente para empezar con Jsoup solamente es necesario :

 Document doc = Jsoup.connect("http://google.com").get();

O incluso podemos simular que estamos usando un navegador con el UserAgent

	
	Document web = Jsoup.connect(URL)
.userAgent("Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.64 Safari/537.31")
.get();

Para recoger todos los links:

Elements links = doc.select("a[href]");

Mientras si queremos parsear algo más complejo, como los links de dentro de una lista:


Elements linksWeb = web.select("ul > li > a[href]");
for(Element link : linksWeb)
{
String l = link.attr("href");
System.out.println( l );
}

Para apreciar más la gran similitud con jquery podemos ver lo siguiente :


Elements articles = web.select("div.articles");
for(Element article: articles)
{
String title = article.select("a").first().text().trim();

Elements aubarts= article.select("> ul > li");

parseSubArts(aubarts, "", 1);
}

En definitiva si quieres recoger datos de una pagina web Jsoup puede ser una solución, aunque una buena seria recoger los datos de un servicio en XML/JSON.

Jsoup: http://jsoup.org/
Jsoup HelloWorld : http://www.mkyong.com/java/jsoup-html-parser-hello-world-examples/

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos necesarios están marcados *