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

使用Jsoup提取div内首个span下strong标签内容的技术求助

解决Jsoup抓取第一个span下strong内容的问题

看起来你已经搞定了大部分数据的抓取,就差价格这部分啦!我帮你分析下问题,然后给你调整代码:

首先看你的HTML结构,目标是<div id="cat-product-list">里第一个显示的<span>(也就是id="wholesale_11_member_price"那个),然后取它下面<strong>的文本。你现在的代码会遍历所有符合span.index-price.special_price.final_price的元素,但其实你只需要第一个,而且要准确拿到它的strong内容。

问题点说明

  • 你的选择器里有个小笔误:div.product- list多了个空格,应该是div.product-list,这可能导致你选不到目标div;
  • 现在的代码遍历所有匹配的span,但你需要的是第一个(可见的那个),不需要遍历;
  • 没有直接定位到span下的strong标签来获取文本。

修改后的代码片段

把你原来的价格相关代码替换成下面的内容,就能拿到想要的价格了:

// 先定位到价格所在的div,用selectFirst直接拿第一个匹配的元素
Element priceDiv = element.selectFirst("div.product-list.list_all_items_price.price_new");
if (priceDiv != null) {
    // 获取第一个符合条件的span(就是页面上显示的那个VIP价格)
    Element targetSpan = priceDiv.selectFirst("span.index-price.special_price.final_price");
    if (targetSpan != null) {
        // 从span里拿到strong标签的文本内容
        String productPrice = targetSpan.selectFirst("strong.final_price_strong").text();
        System.out.println("商品价格:" + productPrice);
    } else {
        System.out.println("未找到目标价格span");
    }
} else {
    System.out.println("未找到价格div");
}

代码解释

  • selectFirst()方法会直接返回匹配到的第一个元素,比遍历更高效,也符合你要第一个span的需求;
  • 逐层判断元素是否存在(加了null判断),避免因为页面结构变化导致空指针异常;
  • 最后直接通过text()方法拿到strong标签里的文本内容,而不是用toString()或者attr(),这样就能得到纯净的价格字符串(比如US$5.25)。

这样调整后,应该就能顺利抓取到你想要的价格内容啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:05:02