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.
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);
}
}
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)
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)