如何借助SwiftSoup在Swift中解析HTML body内div下的img src标签
解决SwiftSoup解析HTML中img标签src属性的方案
实现逻辑
- 使用SwiftSoup自带的CSS选择器精准定位body下div内部的img标签
- 调用元素的
attr()方法获取src属性值 - 新增可选值安全判断,避免强制解包引发崩溃
完整实现代码
// 安全读取本地HTML模板文件 guard let pathToInvoiceHTMLTemplate = Bundle.main.path(forResource: "test", ofType: "html") else { print("未找到指定HTML文件") return } do { let strHTMLContent = try String(contentsOfFile: pathToInvoiceHTMLTemplate) let doc: Document = try SwiftSoup.parse(strHTMLContent) // 定位所有body下div中的img标签,可根据需求调整选择器精度 let imgList = try doc.select("body div img") // 遍历获取每个img的src属性 for imgElement in imgList { let imgSrc = try imgElement.attr("src") print("img标签src属性值:\(imgSrc)") // 如需获取其他属性,可复用同样写法,比如alt属性: // let imgAlt = try imgElement.attr("alt") } } catch { print("解析错误:\(error.localizedDescription)") }
常用扩展用法
- 如果你只需要获取第一个匹配的img标签,可以把
select("body div img")替换为try doc.selectFirst("body div img"),直接得到单个元素无需遍历 - 如果需要筛选带指定属性的img,比如筛选alt值为Red dot的img,选择器可以写为
"body div img[alt='Red dot']"
内容的提问来源于stack exchange,提问作者Mahboob Nur
相关产品推荐
相关产品推荐

