如何使用Jsoup选择器提取HTML中div.comment内的日期
用Jsoup提取目标日期的解决方案
我明白你之前尝试用标签索引的选择器没成功的原因——这个日期没有被单独的HTML标签包裹,它是夹在两个链接和时间之间的文本节点,所以单纯靠选择器没法直接定位到它,得结合Jsoup的节点处理方法来提取。
具体实现步骤
- 先定位到评论的根容器:
div.comment - 找到指向Kitzbühel的那个链接(这个链接有明确的href特征,比索引更可靠)
- 获取这个链接后面紧邻的文本节点,里面包含了日期和时间的分隔内容
- 从文本里提取出日期部分
示例代码
// 假设已经解析好HTML文档到doc对象中 Element commentContainer = doc.selectFirst("div.comment"); // 定位到Kitzbühel的链接,用href包含特征来选择,比索引更稳定 Element locationLink = commentContainer.selectFirst("a[href*=kitzbuehel]"); // 获取链接后面的文本节点 TextNode dateTimeText = (TextNode) locationLink.nextSibling(); // 清理文本并提取日期 String rawContent = dateTimeText.text().trim(); // 按|分割,取中间的日期部分 String targetDate = rawContent.split("\\|")[1].trim(); // 输出结果就是22.01.2018 System.out.println(targetDate);
为什么不用索引选择器?
你之前试的a:eq(3)这类索引选择器容易失效,因为页面结构一旦调整(比如新增/减少链接),索引就会错位。而用a[href*=kitzbuehel]这种基于特征的选择器,能更稳定地定位到目标节点。
内容的提问来源于stack exchange,提问作者KompiKompi
相关产品推荐
相关产品推荐

