2017-05-07 4 views
2

Ich habe versucht, auf ein bestimmtes Element in einem Drop-down-Menü auf einer Steam-Ranglistenseite zuzugreifen. Gibt es eine gute Möglichkeit, auf einen bestimmten Optionswert zuzugreifen? Ich habe den folgenden Code ausprobiert und es ist kein Wert (Debugger zeigt LevelName als ""). Jede Hilfe ist willkommen, danke :)Jsoup wähle Elemente aus dem Dropdown-Menü

String url = "http://steamcommunity.com/stats/592300/leaderboards/1900835"; 
Document document = Jsoup.connect(url).get(); 
String levelName = document.select("div#leaderHeader > option:contains(1900822)").val(); 
System.out.println(levelName); 

Antwort

1

Es gibt einige Fehler in Ihrem Code:

  • :contains keine Attribute überprüfen, aber Text erzeugt durch das Element. Wenn Sie <option value="1900822">someText</option> mit value="1900822" finden wollen, dann können Sie [attr=value] Selektor wie option[value=1900822] (ohne Anführungszeichen) verwenden
  • verwendet man parent > child aber <option ...> ist Kind von <select ...> Element, nicht <div id="leaderHeader">. Dieses div ist sein Vorfahre, aber es ist nicht übergeordnet, also entfernen Sie das >
  • Ich bin nicht sicher, was Sie versuchen, mit val() Methode hier zu tun, aber ich rate, dass Sie text() verwenden möchten.

So möchten Sie wahrscheinlich:

String levelName = document.select("div#leaderHeader option[value=1900822]").text(); 

bemerken nur, dass es etwas non-breaking spaces&nbsp; in Folge sind. Sie können sie durch einfache Leerzeichen ersetzen und danach führende und nachfolgende trimmen.

levelName = levelName.replace((char)160,' ').trim(); 
Verwandte Themen