使用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
相关产品推荐
相关产品推荐

