我使用WKWebView登录网站,现在我想解析网站的HTML.如何在swift中访问网站html?我知道它如何用于UIWebView但不适用于WKWebView.
谢谢你的帮助!
Ona*_*ato 79
如果您等到页面已加载,您可以使用:
webView.evaluateJavaScript("document.documentElement.outerHTML.toString()",
completionHandler: { (html: Any?, error: Error?) in
print(html)
})
Run Code Online (Sandbox Code Playgroud)
您还可以注入一些返回HTML的javascript.
let script = WKUserScript(source: javascriptString, injectionTime: injectionTime, forMainFrameOnly: true)
userContentController.addUserScript(script)
self.webView.configuration.userContentController.addScriptMessageHandler(self, name: "didGetHTML")
…
func userContentController(userContentController: WKUserContentController,
didReceiveScriptMessage message: WKScriptMessage) {
if message.name == "didGetHTML" {
if let html = message.body as? String {
print(html)
}
}
}
Run Code Online (Sandbox Code Playgroud)
你可以注入的javascript看起来像:
webkit.messageHandlers.didGetHTML.postMessage(document.documentElement.outerHTML.toString());
Run Code Online (Sandbox Code Playgroud)
从 WKWebView 获取 HTML
wkWebView.evaluateJavaScript("document.body.innerHTML", completionHandler: { (value: Any!, error: Error!) -> Void in
if error != nil {
//Error logic
return
}
//let result = value as? String
//Main logic
})
Run Code Online (Sandbox Code Playgroud)
将 HTML 设置为 WKWebView
//Do not forget to extend a class from `WKNavigationDelegate`
func someFunction() {
let wkWebView = WKWebView()
wkWebView.loadHTMLString("<html><body></body></html>", baseURL: nil)
wkWebView.navigationDelegate = self as? WKNavigationDelegate
}
func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
//ready to be processed
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
24532 次 |
最近记录: |