Comenzando con Jsoup
Extrae las URL y los títulos de los enlaces
Jsoup se puede usar para extraer fácilmente todos los enlaces de una página web. En este caso, podemos usar Jsoup para extraer solo los enlaces específicos que queremos, aquí, los que están en un encabezado h3
en una página. También podemos obtener el texto de los enlaces.
Document doc = Jsoup.connect("http://stackoverflow.com").userAgent("Mozilla").get();
for (Element e: doc.select("a.question-hyperlink")) {
System.out.println(e.attr("abs:href"));
System.out.println(e.text());
System.out.println();
}
Esto da el siguiente resultado:
http://stackoverflow.com/questions/12920296/past-5-week-calculation-in-webi-bo-4-0
Past 5 week calculation in WEBI (BO 4.0)?
http://stackoverflow.com/questions/36303701/how-to-get-information-about-the-visualized-elements-in-listview
How to get information about the visualized elements in listview?
[...]
Que esta pasando aqui:
-
Primero, obtenemos el documento HTML de la URL especificada. Este código también establece el encabezado del Agente de usuario de la solicitud en “Mozilla”, de modo que el sitio web sirva la página que normalmente serviría a los navegadores.
-
Luego, use
select(...)
y un bucle for para obtener todos los enlaces a las preguntas de Stack Overflow, en este caso enlaces que tienen la clasequestion-hyperlink
. -
Imprime el texto de cada enlace con
.text()
y el href del enlace conattr("abs:href")
. En este caso, usamosabs:
para obtener la URL absoluta, es decir. con el dominio y protocolo incluido.
Extraer URL completa de HTML parcial
Seleccionar solo el valor del atributo de un enlace: href devolverá la URL relativa.
String bodyFragment =
"<div><a href=\"/documentation\">Stack Overflow Documentation</a></div>";
Document doc = Jsoup.parseBodyFragment(bodyFragment);
String link = doc
.select("div > a")
.first()
.attr("href");
System.out.println(link);
Producción
/documentation
Pasando el URI base al parse
y usando el método método absUrl
en lugar de attr
, podemos extraer la URL completa.
Document doc = Jsoup.parseBodyFragment(bodyFragment, "http://stackoverflow.com");
String link = doc
.select("div > a")
.first()
.absUrl("href");
System.out.println(link);
Producción
https://www.wikiod.com/es/docs/
Extrae los datos del archivo del documento HTML
Jsoup se puede usar para manipular o extraer datos de un archivo local que contiene HTML. filePath
es la ruta de un archivo en el disco. ENCODING
es el nombre deseado del conjunto de caracteres, p. “Windows-31J”. es opcional
// load file
File inputFile = new File(filePath);
// parse file as HTML document
Document doc = Jsoup.parse(filePath, ENCODING);
// select element by <a>
Elements elements = doc.select("a");