使用JSoup提取数据

时间:2013-12-07 15:14:57

标签: user-interface jsoup

即使我已经查看了这个问题的很多答案,我仍然不知道如何在我的程序中实现这一点。

基本上,我想从这个网站获取数据 - > http://leagueoflegends.wikia.com/wiki/ahri

然后,从这个特定的数据表

<table id="champion_info-lower" style="background-color:#041424;box-shadow:0 2px 5px black, inset 0 7px 5px -5px black;text-align:center;padding:0 1em;border-spacing:0;width:90%;margin:0 auto;">

我想将健康,生命恢复,攻击伤害,攻击速度等统计数据的数字提取到我班级的实例变量中。

那我该怎么做?

你们可以展示具体的代码,而不仅仅是单词,因为我仍然不明白这是如何工作的,现在制作的这个程序是我的第一个程序。

1 个答案:

答案 0 :(得分:0)

欢迎使用StackOverflow!

通常,包括我自己在内的人都不愿意提供代码,如果请求的人没有首先展示他们自己的任何尝试,但是因为这个人可能非常棘手并且主要归结为如何使用Jsoup而不是一般来说,我将提供一个示例代码的答案,该代码可以为您提供所需的结果。虽然记住,你应该练习你的一般编程,并提供你到目前为止所做的代码的例子,而不是只是让别人为你提供代码!


选择ID

的某些元素

您可以使用CSS选择器选择table id="champion_info-lower"元素 使用语法#id,如下面<span id="Abilities">元素

所述
Element e = doc.select("span#Abilities").first();
System.out.println(e.text());

打印出Abilities。这可用于获取表格中的值。


将值拆分为变量

我不想给你一个完整的解决方案,但如果没有显示一些正常的代码,这可能很难解释。如果查看包含您感兴趣的表的HTML,您会看到只能通过对包含我们要解析的数据的td元素使用以下选择器语法来选择正确的部分。

Elements table = doc.select("table#champion_info-lower td:eq(1) table td");

进一步观察HTML显示健康的值在兄弟元素中呈现给包含文本“Health”的元素。如果我们检查表中的每个元素是否为“Health”,我们知道下一个将是我们正在寻找的那个。由于我们只选择了td元素,现在应该很容易。

String health = "Health: ";
for (Element e : table) {
    if (e.text().equals("Health")) {
        health += table.get(table.indexOf(e) + 1).text();
    }
}
System.out.println(health);
  1. 检查表格中的所有元素。
  2. 如果文本“Health”,请将下一个元素的值指定为string health
  3. 这将输出

    Health: 380 (+80)
    

    弄清楚如何获得其余的值应该是小菜一碟!

    在继续之前尝试使用自己的一些代码,我强烈建议您使用Jsoup API来了解如何使用它,尤其是Element类和FAQ关于如何使用选择器。