【问题标题】:Jsoup, cannot get an element out of a tableJsoup,无法从表中获取元素
【发布时间】:2013-03-21 23:51:48
【问题描述】:

我最近一直在搞乱 Jsoup。我的朋友喜欢为《暗黑破坏神》买金币,所以我想我应该给他做一个小程序,从各个网站获取价格并呈现给他,这样他就可以尽可能少花钱。通常,我可以这样抢到价格;

Document Fasteve;

    try {

        Fasteve = Jsoup.connect("http://www.fasteve.com/diablo-3/Gold/?st=US(Normal)").get();
        Elements Price = Fasteve.select("table[class=table_2] tr:eq(5) td:eq(1)");

        System.out.println("http://www.fasteve.com/diablo-3/Gold/?st=US(Normal)");
        System.out.println("1000M Gold = " + Price.text());

    } catch (IOException e) {
        e.printStackTrace();
    }

但是我不能使用那种方法。我也不能使用您声明要从中获取的 tr 和 td 的方法,因为.. 对于此站点,所有 tr 都具有相同的类,因此我无法调用

Elements Price = Fasteve.select("table[class=table] tr[class=row] td:[class=column]");

关于如何获取该价值有什么想法吗? (64.37) 再次感谢 Stackoverflow。

【问题讨论】:

    标签: java jsoup


    【解决方案1】:

    考虑

    • 创建一个包含 td1 字符串和 td2 或价格字符串的类,我们称之为 DiabloGoldRow 或类似的名称。
    • 创建此类的集合,例如 ArrayList<DiabloGoldRow>,或者如果您希望能够基于 td1 字符串快速获取信息,则创建 HashMap<String, DiabloGoldRow>
    • 然后使用 JSoup 隔离表中的信息,然后在 for 循环中对其进行迭代,创建 DiabloGoldRow 对象的实例并将它们放入 ArrayList 或其他集合(即 HashMap)中。

    我将把代码的细节留给学生练习。

    编辑
    你问,

    为什么我需要创建一个单独的类来保存变量?

    因为您需要将每行中的两条信息保持在一起,并且可能需要搜索其中一条以获得另一条。这样做比使用二维数组或并行数组要干净得多。你反对这样做的理由是什么?

    编辑 2
    你说,

    我不反对任何事情。我只是想知道这将如何帮助我获得我需要的价值观。我的问题是使用我通常使用的方法,我无法获取我想要的数据。我只是在寻找一种不同的语法来获取指定的数据。

    同样,您可以使用 for 循环来执行此操作。只需循环遍历表格的行:

      Elements eles = doc.select("table tr");
    
      for (int i = 0; i < eles.size(); i++) {
         Elements rowEles = eles.get(i).select("form");
    
         Elements goldEles = rowEles.select("[name=gold]");
         String goldValue = goldEles.attr("value");
    
         Elements priceEles = rowEles.select("[name=price]");
         String priceValue = priceEles.attr("value");
    
         System.out.printf("%-7s: %-5s%n", goldValue, priceValue);
      }
    

    【讨论】:

    • 为什么我需要创建一个单独的类来保存变量?
    • 我不反对任何事情。我只是想知道这将如何帮助我获得我需要的价值观。我的问题是使用我通常使用的方法,我无法获取我想要的数据。我只是在寻找一种不同的语法来获取指定的数据。
    • 谢谢,完美回答了我的问题!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-24
    • 2014-07-16
    • 2016-05-17
    • 1970-01-01
    相关资源
    最近更新 更多