2017-05-07 65 views
2

我一直在嘗試訪問Steam排行榜頁面上的下拉菜單中的特定元素。有沒有一種訪問特定「期權價值」的好方法?我試過下面的代碼,它沒有抓取任何值(調試器顯示levelName爲「」)。任何幫助表示讚賞,感謝:)Jsoup從下拉菜單中選擇元素

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

回答

1

有在你的代碼一些錯誤:

  • :contains不檢查屬性,而是由元素生成的文本。如果你想使用value="1900822"找到<option value="1900822">someText</option>那麼你可以使用[attr=value]選擇像option[value=1900822](不帶引號)
  • 您使用parent > child<option ...><select ...>元素,不是<div id="leaderHeader">的孩子。這個div是它的祖先,但它不是父級,所以刪除它>
  • 我不確定你在用val()方法試圖做什麼,但我猜你想要使用text()

所以,你可能想:

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

就注意到有在結果一些non-breaking spaces&nbsp;。你可能想用簡單的空格替換它們,然後修剪前導和尾隨。

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