我希望使用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++;
}
我知道如何做到这一点吗?
答案 0 :(得分:0)
为实现目标,您必须实施一些事项。看看这个Groovy脚本 - https://gist.github.com/wololock/568b9cc402ea661de546现在让我们解释一下我们在这里有什么
List<Element> rows = document.select('table[id=ABC Guide] > tbody > tr')
我们在这里指定我们对tr
的直接孩子tbody
感兴趣,table
是ABC 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