SwiftSoup能否正确解析含特定无标签文本的目标HTML页面?
SwiftSoup完全可以实现你的解析需求
实现思路
通过精准的选择器筛选出符合要求的<ol>区块,再提取目标文本:
- 只保留第一个
<li>内直接包含src含pixelshim.gif的<img>标签的<ol>元素 - 提取该
<ol>下第二个<li>的文本内容,清理多余空白后即为需要的河段名称
代码示例
import SwiftSoup // 假设已获取网页HTML内容存入htmlContent变量 do { let doc = try SwiftSoup.parse(htmlContent) let allOlBlocks = try doc.select("ol") for ol in allOlBlocks { // 检查第一个li是否有直接子元素是指定的img let targetImg = try ol.select("li:first-child > img[src*=pixelshim.gif]") guard !targetImg.isEmpty else { continue } // 提取第二个li的文本并清理空白 let riverSectionText = try ol.select("li:nth-child(2)").text() .trimmingCharacters(in: .whitespacesAndNewlines) if !riverSectionText.isEmpty { print(riverSectionText) // 此处可将结果存入数组或进行后续处理 } } } catch { print("解析出错:\(error.localizedDescription)") }
关键选择器说明
li:first-child > img[src*=pixelshim.gif]:>确保<img>是第一个<li>的直接子元素(排除被<a>包裹的情况),[src*=pixelshim.gif]匹配src包含目标文件名的图片li:nth-child(2):精准定位到<ol>下的第二个<li>元素trimmingCharacters:去除文本前后的空格、换行等无效字符,保证结果整洁
内容的提问来源于stack exchange,提问作者Bryant Irawan
相关产品推荐
相关产品推荐

