使用 Jsoup 从 HTML 页面中提取数据

Extracting data from HTML page using Jsoup

我正在尝试从 https://secure.runescape.com/m=hiscore_oldschool/hiscorepersonal.ws?user1=Feed%20Meh%20Dog

这是一个 table,但我在任何地方都没有看到 table ID。我只需要知道我应该使用什么 id 或 class。

尝试了多个教程,但都有一个直接的 table class 或 id。 我认为我应该使用一个 div ID,只是不确定如何提取每个特定的 row/skill。

final Document 文档 = Jsoup.connect("https://secure.runescape.com/m=hiscore_oldschool/hiscorepersonal.ws?user1=Feed%20Meh%20Dog").get();

    for (Element row : document.select("WHAT DO I PUT HERE tr")); {
        final String Attack = row.select("WHAT DO I PUT HERE")
        final String Defence = row.select("WHAT DO I PUT HERE")
        final String Strength = row.select("WHAT DO I PUT HERE")
    }

只想输出行,或者在dividual skills到控制台。任何帮助将不胜感激。

如果您想轻松获得所需的数据,我建议您使用官方 API。使用这个 link:https://secure.runescape.com/m=hiscore_oldschool/index_lite.ws?player= 以一种 hacky 的方式用 Jsoup 做到这一点看起来有点像这样......

    final Document document = Jsoup.connect("https://secure.runescape.com/m=hiscore_oldschool/index_lite.ws?player=Feed%20Meh%20Dog").get();
    final Element body = document.selectFirst("body");

    String[] rawSkills = body.html().split(" ");
    ArrayList<String[]> skills = new ArrayList<>();

    for(String s: rawSkills ) {
        skills.add(s.split(","));
    }

    System.out.println(skills.get(0)[1]);

然后 select 一项个人技能,你可以做类似 skills.get(x)[y] 的事情,其中​​ x 是数组中技能的索引(从 0 开始),y 是来自你想要的技能。 0是等级,1是技能等级,2是xp。

API 没有提供每个技能的名称,因此您必须手动进行。技能顺序与高分页面上的一样here

编辑:我冒昧地为这个特定端点创建了一个小的 Java 包装器,您可以找到 here.