Swift:
解析HTML

如何做:

默认情况下,Swift 不包含用于 HTML 解析的内置库,这就需要使用第三方库来有效地处理这项任务。其中最受欢迎的选择之一是 SwiftSoup,一个纯 Swift 库,它提供了类似 jQuery 的语法来进行 HTML 解析和操作。

安装

首先,你需要将 SwiftSoup 添加到你的项目中。如果你使用的是 Swift 包管理器,可以在你的 Package.swift 依赖中添加它:

dependencies: [
    .package(url: "https://github.com/scinfu/SwiftSoup.git", from: "2.3.2")
]

示例:提取 HTML 中的链接

假设你有一个 HTML 文档,并且你想提取所有的链接 (<a href="...">)。使用 SwiftSoup,你可以轻松完成这项任务:

import SwiftSoup

let html = """
<!DOCTYPE html>
<html>
<head>
    <title>示例页面</title>
</head>
<body>
    <p>欢迎访问我们的网站</p>
    <a href="https://example.com/page1">页面 1</a>
    <a href="https://example.com/page2">页面 2</a>
</body>
</html>
"""

do {
    let doc: Document = try SwiftSoup.parse(html)
    let links: Elements = try doc.select("a")
    for link in links.array() {
        let linkHref: String = try link.attr("href")
        let linkText: String = try link.text()
        print("\(linkText) - \(linkHref)")
    }
} catch Exception.Error(let type, let message) {
    print("错误类型: \(type) 信息: \(message)")
} catch {
    print("错误")
}

示例输出

前面的代码从 HTML 中提取了 URL 及其文本,输出为:

页面 1 - https://example.com/page1
页面 2 - https://example.com/page2

这个基础示例演示了如何利用 SwiftSoup 解析 HTML 文档。通过进一步探索 SwiftSoup 的文档,你可以找到多种方法来导航、搜索和修改 HTML 内容,使你的 Swift 应用能够轻松处理复杂的网络内容。