如何在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
相关产品推荐
相关产品推荐

