JSOUP: Extraer una palabra de una etiqueta de clase
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.
Solución
Jsoup llega solo hasta que alcanza elementos HTML individuales. Si quieres analizar sus cuerpos textuales, que son esencialmente String
S, 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));
// ...
}