使用Jsoup处理HTML数据遇问题:移除行末TD及替换Img为文本
修正后的Jsoup处理代码
假设你已经获取到包含航班信息的Document对象,以下是实现需求的代码:
// 获取所有航班表格行(根据实际页面结构调整选择器,比如特定表格的行用"#flight-table tr") Elements rows = doc.select("tr"); for (Element row : rows) { // 需求1:移除每行的最后一个TD元素 Elements tds = row.select("td"); if (!tds.isEmpty()) { tds.last().remove(); } // 需求2:替换所有Img标签为其title/alt属性的文本 Elements imgs = row.select("img"); for (Element img : imgs) { // 优先取title属性,没有则用alt,都没有留空文本 String imgText = img.hasAttr("title") ? img.attr("title") : img.attr("alt"); // 用文本节点替换img标签,彻底移除图片元素 img.replaceWith(new TextNode(imgText, "")); } // 给首个TD添加rel属性(属性值根据你的实际需求设置,比如航班编号) if (!tds.isEmpty()) { Element firstTd = tds.first(); firstTd.attr("rel", firstTd.text().trim()); } } // 获取处理后的HTML内容 String processedHtml = doc.html();
关键说明:
- 移除最后一个TD:直接通过
tds.last().remove()定位每行末尾的TD并移除,无需依赖id(如果你的场景中最后一个TD固定带有id="marker",可以把选择器改成row.select("td#marker").remove(),通用场景下取last()更灵活)。 - 替换Img标签:遍历行内所有img元素,优先读取title属性值,没有则用alt,再用
replaceWith()将图片标签替换为纯文本节点,完全移除img元素。 - 添加rel属性:定位首个TD后,用
attr()方法设置rel属性,属性值可根据业务需求调整(比如航班ID、唯一标识等)。
内容的提问来源于stack exchange,提问作者naz
相关产品推荐
相关产品推荐

