You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Jsoup获取无属性或类的第n个子元素(示例:第二个div文本)

使用Jsoup获取无属性父div下的第二个子div文本内容

嘿,这场景我太熟了!之前做爬虫的时候经常碰到这种没任何标识的嵌套div,用Jsoup分分钟就能搞定,给你两种实用的方法:

方法一:用CSS选择器(推荐,代码更简洁)

Jsoup完美支持标准CSS选择器,针对这种无属性的父div,我们可以直接用选择器定位它的第二个子div。这里分两种情况:

  • 如果父div的所有子元素都是div,用:nth-child(2)就够了
  • 如果父div里混了其他标签(比如p、span),用:nth-of-type(2)更精准,它只会匹配父元素下的第二个div类型子元素

代码示例:

// 先假设你已经通过Jsoup拿到了Document对象
// 第一步:定位到那个无属性的父div(如果它是页面里第一个div,就用first())
Element parentDiv = doc.select("div").first();

// 情况1:父div子元素全是div,直接取第二个子元素
String secondDivText = parentDiv.select("div:nth-child(2)").text();

// 情况2:父div里有其他标签,用nth-of-type只匹配div类型的第二个子元素
// String secondDivText = parentDiv.select("div:nth-of-type(2)").text();

System.out.println(secondDivText);

方法二:通过DOM子元素列表遍历

如果你不习惯用选择器,也可以直接遍历父div的子元素集合,注意Jsoup的子元素索引是从0开始的,所以第二个子元素对应索引1。记得加个判断避免数组越界哦!

代码示例:

Element parentDiv = doc.select("div").first();
// 先筛选出父div下所有的子div
Elements childDivs = parentDiv.select("div");

if (childDivs.size() >= 2) {
    // 取第二个子div(索引1)的文本
    String secondDivText = childDivs.get(1).text();
    System.out.println(secondDivText);
} else {
    // 处理子div数量不足的异常情况
    System.out.println("父div下的子div数量不够2个哦");
}

小提示

如果能直接从整个文档里连写选择器定位,代码会更短:比如doc.select("div > div:nth-child(2)").text(),但前提是你能确保那个无属性的父div是这个选择器唯一匹配的对象。

内容的提问来源于stack exchange,提问作者AmirReza Hosseini

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 10:26:53