我如何使用JSoup从表格行中获取data-code
值?
这是我尝试过的,但它没有打印任何内容:
Document doc = Jsoup.connect("http://www.example.com").get();
Elements dataCodes = doc.select("table[class=team-list]");
for (Element dataCode : dataCodes)
{
System.out.println(dataCode.attr("data-code"));
}
HTML代码如下所示:
<body>
<div id-=""main">
<div id="inner">
<div id="table" class="scores-table">
<table class ="team-list">
<tbody>
<tr data-code="1" class="data odd"></tr>
<tr data-code="2" class="data even"></tr>
<tr data-code="3" class="data odd"></tr>
<tr data-code="1" class="data even"></tr>
</tbody>
</table>
</div>
</div>
</div>
我希望它打印出表格每一行的数据代码值(这是团队编号)。
答案 0 :(得分:1)
您的选择器应该归结为tr
元素:
Elements dataCodes = doc.select("table.team-list tr");
根据评论,这仍然会导致一个空列表 - 在这种情况下,该表可能是借助于javascript逻辑或单独的AJAX请求动态生成的。
在这种情况下,其中一种可能的方法是使用真正的浏览器处理动态javascript,AJAX部分。试试selenium
browser automation framework:
WebDriver driver = new FirefoxDriver();
driver.get("http://www.example.com");
List<WebElement> elements = driver.findElements(By.cssSelector("table.team-list tr"));
for(WebElement element: elements)
{
System.out.println(element.getAttribute('data-code'));
}