繁体   English   中英

使用jSoup从表中获取数据

[英]Get data from table using 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++;
    }

关于我该怎么做的任何想法?

要实现目标,您只需执行几件事。 看看这个Groovy脚本-https: //gist.github.com/wololock/568b9cc402ea661de546现在让我们解释一下这里的内容

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

在这里,我们指定对每个行tr感兴趣,该行trtbody直接子代, tbody是ID为ABC Guidetable直接子代。 作为回报,您将收到描述这些tr行的Element对象的列表。

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() 然后,我们只需将这些数据放入哈希映射即可。 就这样。

希望本示例提供的描述将对您开发应用程序有所帮​​助。

编辑:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM