Pregunta

He estado usando JSOUP durante las últimas semanas para raspar los datos con éxito de una página web; Sin embargo, he llegado a un callejón sin salida al tratar de encontrar una forma de extraer una sola palabra de una etiqueta de clase, en lugar de todo el texto.

Aquí está el código Java que estoy usando:

// store all the search results in the elmAllSearchResults element
Element elmAllSearchResults = doc.getElementById("SearchResults"); 
// extract the detDesc class from elmAllSearchResults
Elements elmSize = elmAllSearchResults.getElementsByClass("desc");

Extraer múltiples líneas similares a esta:

<font class="desc">Date 11-04; 09:21, Size 8100.00 MB, User <a class="desc" href="/member/aUser/" title="Browse">
<font class="desc">Date 12-04; 09:21, Size 62 MB, User <a class="desc" href="/member/bUser/" title="Browse">

Pero ahora todo lo que quiero poder hacer es extraer el tamaño (8100.00 MB y 62 MB en este caso) de esta cadena de texto. Como el tamaño no es fácilmente identificable al estar envuelto en cualquier etiqueta, parece que no puedo encontrar una manera de obtenerlo.

¿Es posible?

Gracias.

¿Fue útil?

Solución

Jsoup llega solo hasta que alcanza elementos HTML individuales. Si quieres analizar sus cuerpos textuales, que son esencialmente StringS, entonces tendrías que agarrar String métodos basados en cambio como substring(), indexOf(), replaceAll(), etc.

Por ejemplo, si puede garantizar que la información deseada siempre sea entre ", Size " y ", User", entonces debes subcadrar el String en ese:

String before = ", Size ";
String after = ", User";

for (Element element : elements) {
    String text = element.text();
    String size = text.substring(text.indexOf(before) + before.length(), text.indexOf(after));
    // ...
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top