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

如何在Swift中使用Kanna访问特定标签及提取指定meta标签内容

在Swift中使用Kanna操作HTML的常见问题解答

1. 如何在Swift中使用Kanna访问特定标签?

首先得确保你已经在项目里集成了Kanna(不管是用Swift Package Manager还是CocoaPods都能搞定),接下来就可以通过几种常用方式定位特定标签了:

  • 按标签名直接查找
    如果要找所有<p>标签,代码可以这么写:

    import Kanna
    
    guard let html = try? HTML(html: yourHTMLString, encoding: .utf8) else {
        print("解析HTML失败")
        return
    }
    
    // 遍历所有p标签
    for pTag in html.xpath("//p") {
        print(pTag.text ?? "无文本内容")
    }
    

    这里用了XPath语法//p来匹配所有层级的<p>标签,也可以用html.css("p")来实现同样效果。

  • 通过属性定位标签
    比如要找带有class="post-content"的<div>标签,用CSS选择器会很方便:

    if let contentDiv = html.css("div.post-content").first {
        print(contentDiv.text ?? "")
    }
    

    或者用XPath:html.xpath("//div[@class='post-content']").first

  • 精准定位特定属性的标签
    像你第二个问题里的meta标签,也属于这种场景,后面会单独讲具体实现。

2. 如何提取指定meta标签中的URL?

针对你给出的<meta property="og:url" content="https://wines.nob/red-wines-upp-till-99-usd/25-montepulciano-d-abruzzo" />,我们可以通过CSS选择器或者XPath精准定位这个meta标签,然后提取content属性的值:

方法一:使用CSS选择器

import Kanna

guard let html = try? HTML(html: yourHTMLString, encoding: .utf8) else {
    print("解析HTML出错")
    return
}

// 定位property为og:url的meta标签
if let ogUrlMeta = html.css("meta[property='og:url']").first {
    // 提取content属性的值
    if let urlString = ogUrlMeta["content"] {
        print("提取到的URL:\(urlString)")
        // 如果需要转成URL对象
        if let url = URL(string: urlString) {
            // 这里可以对URL做后续操作
        }
    }
}

方法二:使用XPath

if let ogUrlMeta = html.xpath("//meta[@property='og:url']").first {
    if let urlString = ogUrlMeta["content"] {
        print("提取到的URL:\(urlString)")
    }
}

两种方法都能轻松拿到你需要的URL,选哪种全看你习惯哪种语法~


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 11:05:33