我一直在尝试从Steam排行榜页面的下拉菜单中访问特定元素。是否有一种很好的方式来访问特定的选项价值'?我尝试了以下代码并且它没有抓取任何值(调试器将levelName显示为"")。感谢任何帮助,谢谢:)
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);
答案 0 :(得分:1)
您的代码中几乎没有错误:
:contains
不会检查属性,而是检查元素生成的文本。如果您想使用<option value="1900822">someText</option>
找到value="1900822"
,那么您可以使用[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
。您可能希望用简单的空格替换它们,然后修剪前导和尾随空格。
levelName = levelName.replace((char)160,' ').trim();