JSoup解析嵌套HTML无序列表:无法提取目标链接求助
问题分析与代码修正
我来帮你梳理下代码里的问题,其实主要是CSS选择器写法错误和属性获取方式不对这两个核心点:
1. CSS选择器的类名组合错误
你写的选择器比如ul.no-bullet participants-list,这里的空格表示“后代元素”,意思是找ul.no-bullet下面的participants-list元素,但实际上participants-list是ul的另一个类名,多个类名的选择器应该用点号连接,比如ul.no-bullet.participants-list。同理,后面的div.row collapse participant-info也应该改成div.row.collapse.participant-info——因为row、collapse、participant-info都是同一个div的类。
2. 获取href属性的方式错误
你最后写的select("a.href").text()完全错了:
a.href不是有效的选择器,你要选的是<a>标签,直接用a或者更精确的a.user-profile-link就行text()是获取标签内的文本内容,而你要的是href属性,应该用attr("href")来获取
修正后的代码
// 完整的正确选择器链 + 属性获取方式 for (Element participantLi : doc.select("ul.no-bullet.participants-list li.participant")) { String profileLink = participantLi.select("div.row.collapse.participant-info div.large-1.small-2.columns figure.participant-avatar a.user-profile-link") .attr("href"); System.out.println(profileLink); }
另外,其实可以简化选择器,不用写这么长的链,只要能精准定位到目标元素就行:
// 简化版选择器,直接定位到目标a标签 for (Element link : doc.select("ul.participants-list li.participant a.user-profile-link")) { System.out.println(link.attr("href")); }
内容的提问来源于stack exchange,提问作者WHOATEMYNOODLES
相关产品推荐
相关产品推荐

