使用jSoup从表中获取数据

时间:2014-10-18 09:20:17

标签: java mysql jsoup

我希望使用jSoup从http://www.sportinglife.com/greyhounds/abc-guide上的表中获取数据。我想将这些数据放入我的java程序中的某种表格中,然后我可以在我的代码中使用它。

我不太清楚如何做到这一点。我一直在玩jSoup,目前我可以使用while循环从表中获取每个单元格 - 但显然不能使用它,因为表格中的单元格数量会发生变化。

    Document doc = Jsoup.connect("http://www.sportinglife.com/greyhounds/abc-guide").get();
    int n = 0;
    while (n < 100){
    Element tableHeader = doc.select("td").get(n);


    for( Element element : tableHeader.children() )
    {
        // Here you can do something with each element
        System.out.println(element.text());
    }
    n++;
    }

我知道如何做到这一点吗?

1 个答案:

答案 0 :(得分:0)

为实现目标,您必须实施一些事项。看看这个Groovy脚本 - https://gist.github.com/wololock/568b9cc402ea661de546现在让我们解释一下我们在这里有什么

List<Element> rows = document.select('table[id=ABC Guide] > tbody > tr')

我们在这里指定我们对tr的直接孩子tbody感兴趣,tableABC Guide的直接孩子,身份Element。作为回报,您会收到一个tr个对象列表,其中描述了Map<String, String> data = new HashMap<>() 行。

for (Element row : rows) {
    String dog = row.select('td:eq(0)').text()
    String race = row.select('td:eq(1)').text()

    data.put(dog, race)
}

我们将结果存储在一个简单的哈希映射中,以便进一步评估,例如将那些已删除的数据放入数据库中。

Element

现在我们遍历每个String dog = row.select('td:eq(0)').text(),我们从第一个单元格中选择内容作为文本:String race = row.select('td:eq(1)').text()我们重复此步骤以从第二个单元格中检索内容作为文本:{{1 }}。然后我们只是简单地将这些数据放入哈希映射中。这就是全部。

我希望这个提供说明的示例可以帮助您开发应用程序。

编辑:

Java代码示例 - https://gist.github.com/wololock/8ccbc6bbec56ef57fc9e