HTML Parser con Java

HTML Parser con Java

No soy un experto en Java pero si sigo aprendiendo tanto como ahora voy empezar a cambiar de idea.

Estoy construyendo un webcrawler que debería navegar por unas 80 millones de webs, y más, y para poder hacerlo más me vale que haga algo que vaya rápido.

Lo hago en Java y no en C porque así me servirá para aprender un lenguaje usadísimo. No en PHP, que es lo que dominio, porque no tiene multithread y esto es bloqueante para el proyecto.

He estado mirando parseadores Html para Java y después de dar muchas vueltas, pero muchas, he encontrado la solución definitiva:

http://jsoup.org

Funciona fantásticamente bien y a mí, en particular, a la primera. Ha sido coser y cantar.

Este post vale mucho porque os ahorrará realmente mucho tiempo si tenéis que parsear en Java.

Ejemplo



En este ejemplo me conecto a una web y obtengo el título. Fuciona muy bien:


import java.io.IOException;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;



public class parsear {

    public static void main(String args[])
    {
   
        Document doc = null;
        try {
            doc = Jsoup.connect("http://www.alexmoleiro.com/")
                    .followRedirects(true)               
                    .get()
               
               
                    ;
        } catch (IOException ex) {
            System.out.println("No encuentra el host");
        }
        String title = doc.title();    
        System.out.println(title);
   
    }

}

Comandos para obtener los metas description y keyword:



String title = doc.select("meta[name=description]").first().attr("content");
String keyword = doc.select("meta[name=keywords]").first().attr("content");

Realmente fantástica esta librería (.jar)