使用Jsoup获取第n个子元素

4
例如,一个网站有这样的代码:

例如一个网站有这样的代码:

<div>
    <div>
        first
    </div>
    <div>
        second
    </div>
    <div>
        third
    </div>
</div>

我想使用Jsoup获取"第二个"div的文本内容,但该div没有属性或类名。

1个回答

4

有几种方法可以实现它。

例如,我们可以使用 select 方法,它返回具有所有指定元素的 Elements 。由于 Elements extends ArrayList<Element>,因此它继承了 ArrayList 的所有公共方法。这意味着我们可以使用 get(index)方法选择特定的子元素(从0开始)。

 String html = 
        "<div>\n" +
        "    <div>\n" +
        "        first\n" +
        "    </div>\n" +
        "    <div>\n" +
        "        second\n" +
        "    </div>\n" +
        "    <div>\n" +
        "        third\n" +
        "    </div>\n" +
        "</div>";
Document doc = Jsoup.parse(html);
Elements select = doc.select("div > div");
System.out.println(select.get(1));

输出:

<div>
  second 
</div>

另一种方法是在CSS选择器中使用:eq(n)(来自官方Jsoup教程)。

:eq(n):查找兄弟节点索引等于n的元素;例如,表单输入框input:eq(1)

如下:

System.out.println(doc.select("div > div:eq(1)"));

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接