使用jsoup选择一个非重要的div标签

时间:2013-06-30 14:14:45

标签: java web-scraping jsoup

我正在使用jsoup进行webscraping并遇到了另一个问题。我需要信息的div没有类,id或任何特殊指示。它被埋在页面中。这是:

<div class="column">
    <div class="form-label">Rate: </div>
    <div>11.082/11.167</div>
    <div class="form-label padding-top">High/Low: </div>  
    <div>1005.0/0.0004</div>
</div>

我需要获得第一组数字,但我不确定如何告诉jsoup我特别想要它们;有没有人有任何建议?

2 个答案:

答案 0 :(得分:1)

  1. 选择class="column"
  2. 的所有div
  3. 循环显示所选元素列表。选择元素中包含文本Rate:
  4. 的第一个div
  5. 你的文字在2. div
  6. 里面

    对不起代码格式化不起作用o.0

    public String getRage(Document document) {
        for(Element e : document.getElementsByClass("column")) {
            if(e.getElementsByTagName("div").get(0).ownText().equals("Rate: ")) {
                return e.getElementsByTagName("div").get(1).ownText();
            }
        }
    
        return null;
    }
    

答案 1 :(得分:1)

假设doc是您的Document对象......

doc.select('.column > div:eq(1)');

应该完成这项工作,你基本上按类选择父div,然后获取所有子div,但过滤子div,以便返回索引1处的元素(这是一个基于零的索引,所以索引1是第二个元素)

就个人而言,我会切换到jQuery,因为它使用了更好的选择器引擎,但每个都是他们自己的......