gpt4 book ai didi

html - 是否有一个简单的解决方案可以快速解析 html 以将各个元素放入它们自己的变量中?

转载 作者:行者123 更新时间:2023-11-28 11:27:34 25 4
gpt4 key购买 nike

我有在网上找到的代码,可以从网站上提取 HTML,然后将其打印出来。我需要将这些保存到一个变量中,以便我可以在我的应用程序中显示/使用它们。

我对这类事情还很陌生,真的只需要指点,我不介意研究!我只需要知道我需要研究哪些步骤!

import UIKit
// run asynchronously in a playground
import PlaygroundSupport
PlaygroundPage.current.needsIndefiniteExecution = true

// create a url
let url = URL(string: "https://www.stackoverflow.com")

// create a data task
let task = URLSession.shared.dataTask(with: url!) { (data, response, error) in
if error != nil {
print("there's a problem")
}
print(String(data: data!, encoding: String.Encoding.utf8) ?? "")

}

//running the task w/ resume
task.resume()

这(在 Xcode playground 中)获取 HTML 并使用以下方法打印出来:
print(String(data: data!, encoding: String.Encoding.utf8) ?? "")谁能帮我弄到<title>...</title>元素到它自己的变量?

最佳答案

没有 WebView 就无法在没有第三方的情况下解析 HTML,但您可以轻松使用 webView 并运行 getElementsByTagName JS 从 HTML 代码中获取任何内容,如下所示:

1-定义js代码:

let js = "document.getElementsByTagName("title")[0].innerHTML"

2- 导入 WebKit 并将 html 加载到 webView 中

class MyViewController : UIViewController {

let html = """
<#the HTML code, can be loaded from anywhere#>
"""

override func loadView() {
let webView = WKWebView()
webView.navigationDelegate = self // Here is the Delegate
webView.loadHTMLString(html, baseURL: nil)

self.view = webView
}
}

3-接受委托(delegate)并实现这个方法:

extension MyViewController: WKNavigationDelegate {
func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
webView.evaluateJavaScript(js) {(result, error) in
guard error == nil else {
print(error!)
return
}

print(String(describing: result))
}
}
}

注意 1:记住 getElementsByTagName 返回一个数组,你必须像 [0] 一样传递你想要获取的索引

注意2:由于使用了JavaScriptCore,所以离不开webView,必须运行在mainThread上。只有 safari 可以在主线程之外执行此操作,因为它具有 V8 引擎。

注意3:即使静态传递HTML,也必须等待委托(delegate)完成

注意 4:您可以使用第三方框架,如 SwiftSoap做这个。

关于html - 是否有一个简单的解决方案可以快速解析 html 以将各个元素放入它们自己的变量中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57735476/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com