Jsoup新手求助:如何解析指定HTML代码提取完整时间字符串
用Jsoup提取完整时间的实现方法
嘿,作为Jsoup新手不用慌,这个时间提取需求其实很容易实现,我给你两种实用的方案:
方案一:利用父元素文本合并+清理格式
这种方法最直接,因为所有时间相关的文本都在同一个父<span class="vi-tm-left">里,我们可以直接获取父元素的文本内容,再去掉多余的括号即可:
// 假设你已经获取了包含目标HTML的Document对象doc Element timeContainer = doc.selectFirst("span.vi-tm-left"); if (timeContainer != null) { // 获取父元素的所有文本(会自动合并子元素的文本) String rawTime = timeContainer.text(); // 去掉括号并整理格式 String fullTime = rawTime.replace("(", "").replace(")", "").trim(); System.out.println(fullTime); // 输出:27 apr 2018 19:17:55 CEST }
方案二:分别提取日期和时间部分再拼接
如果需要更精准地控制每个部分,也可以分别定位两个子span,提取文本后拼接:
// 提取日期部分的span Element dateSpan = doc.selectFirst("span.vi-tm-left > span:first-child"); // 提取时间部分的span Element timeSpan = doc.selectFirst("span.endedDate"); if (dateSpan != null && timeSpan != null) { // 清理日期部分的左括号 String datePart = dateSpan.text().replace("(", "").trim(); // 清理时间部分的右括号 String timePart = timeSpan.text().replace(")", "").trim(); // 拼接成完整时间 String fullTime = datePart + " " + timePart; System.out.println(fullTime); // 输出:27 apr 2018 19:17:55 CEST }
小提示
selectFirst()方法会返回匹配到的第一个元素,避免处理Elements集合的麻烦;text()方法会自动忽略HTML标签,只返回元素包含的纯文本内容;- 记得做非空判断,避免空指针异常哦~
内容的提问来源于stack exchange,提问作者Daniele Asta
相关产品推荐
相关产品推荐

