You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Swift中如何用SwiftSoup解析带特定id属性的HTML标签?

用SwiftSoup提取带id属性的HTML标签内容

当然有可行的实现方法!SwiftSoup支持强大的CSS选择器语法,刚好能满足你筛选带id属性元素的需求,下面是具体的实现步骤和代码示例:

核心思路

用CSS选择器 *[id] 匹配所有带有id属性的HTML元素,然后遍历这些元素,提取你需要的内容(纯文本或HTML结构)存入数组即可。

完整代码示例

import SwiftSoup

// 定义方法:从HTML字符串中提取带id属性的元素内容
func extractContentFromElementsWithId(htmlString: String) throws -> [String] {
    // 1. 解析HTML字符串为Document对象
    let doc = try SwiftSoup.parse(htmlString)
    
    // 2. 使用选择器筛选所有带id属性的元素
    let elementsWithId = try doc.select("*[id]")
    
    var contentArray: [String] = []
    
    // 3. 遍历筛选出的元素,提取内容
    for element in elementsWithId {
        // 选项1:提取元素的纯文本内容(不含HTML标签)
        let textContent = try element.text()
        contentArray.append(textContent)
        
        // 选项2:提取元素的innerHTML(包含子标签的HTML结构),替换上面的text()即可
        // let htmlContent = try element.html()
        // contentArray.append(htmlContent)
    }
    
    return contentArray
}

进阶调整

如果你有更精准的筛选需求,可以修改选择器:

  • 只提取带id的<div>标签:使用选择器 div[id]
  • 只提取id属性值包含特定关键词的元素:比如 *[id*="target"](匹配id里有"target"的元素)
  • 同时获取元素的id值和内容:可以把数组改成元组类型,示例如下:
func extractIdAndContent(htmlString: String) throws -> [(id: String, content: String)] {
    let doc = try SwiftSoup.parse(htmlString)
    let elementsWithId = try doc.select("*[id]")
    
    var resultArray: [(id: String, content: String)] = []
    
    for element in elementsWithId {
        let idValue = try element.attr("id")
        let textContent = try element.text()
        resultArray.append((id: idValue, content: textContent))
    }
    
    return resultArray
}

这个方法和你之前提取链接的逻辑很相似,只是把选择器换成了针对id属性的筛选,上手应该很快~

内容的提问来源于stack exchange,提问作者MakiCodes

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 08:06:01