使用Jsoup从HTML页面提取数据

时间:2019-04-27 03:34:35

标签: java html jsoup html-parsing

我正在尝试从中获得每种技能的水平 https://secure.runescape.com/m=hiscore_oldschool/hiscorepersonal.ws?user1=Feed%20Meh%20Dog

这是一张桌子,但我在任何地方都看不到桌子的ID。我只需要知道我应该使用什么ID或类。

尝试了多个教程,但是所有教程都有一个简单的表类或ID。 我想应该使用一个div ID,只是不确定如何提取每个特定的行/技能。

最终文档文档= 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")
    }

只想将行或个人技能输出到控制台。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

如果您想轻松获取所需的数据,我建议使用官方API。使用此链接:https://secure.runescape.com/m=hiscore_oldschool/index_lite.ws?player=以一种怪诞的方式使用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]);

然后选择一个单独的技能,您将执行类似skills.get(x)[y]的操作,其中x是该技能在数组中的索引(从0开始),而y是您想要的技能信息。 0为等级,1为技能等级,2为xp。

API并未提供每种技能的名称,因此您必须手动进行操作。技能顺序与高分页面here相同。

编辑:我已经为这个特定的端点创建了一个小的Java包装器,您可以在其中找到here