2017-05-07 363 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();