Frage

Ich habe JSOUP in den letzten Wochen verwendet, um Daten von einer Webseite erfolgreich abzukratzen. Ich bin jedoch zu einem Sackgassen gekommen, um einen Weg zu finden, um nur ein einziges Wort innerhalb eines Klassen -Tags anstelle des gesamten Textes zu extrahieren.

Hier ist der Java -Code, den ich verwende:

// 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");

Um mehrere ähnliche Zeilen zu extrahieren:

<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">

Aber jetzt möchte ich nur noch nur die Größe (8100,00 MB und 62 MB) aus dieser Textfolge extrahieren können. Da die Größe nicht leicht zu identifizieren ist, indem Sie in Tags eingewickelt werden, kann ich keinen Weg finden, sie zu bekommen.

Ist es möglich?

Danke.

War es hilfreich?

Lösung

JSOUP geht nur so weit, bis es einzelne HTML -Elemente erreicht. Wenn Sie ihre Textkörper analysieren möchten, die im Wesentlichen sind StringS, dann müsstest du greifen String basierte Methoden Stattdessen wie substring(), indexOf(), replaceAll(), etc.

Wenn Sie beispielsweise garantieren können, dass die gewünschten Informationen immer zwischen sich liegen ", Size " und ", User", dann solltest du das substrieren String auf diesem:

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));
    // ...
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top