使用JSoup得到一个表的数据码值(Using JSoup to get data-code val

2019-10-21 23:15发布

我将如何能够使用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>

我希望它放在桌子上的每一行(这是团队数)打印出来的数据码值。

Answer 1:

你的选择应该再往tr元素:

Elements dataCodes = doc.select("table.team-list tr");

根据该意见,这仍然会导致到一个空的列表 - 在这种情况下,该表可能是动态的JavaScript逻辑的帮助或单独的AJAX请求生成。

在这种情况下,可能的方法之一将是有一个真正的浏览器搞定动态JavaScript,AJAX的一部分。 尝试selenium浏览器自动化框架 :

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


文章来源: Using JSoup to get data-code value of a table