Я вхожу на веб-сайт с помощью WKWebView, и теперь я хочу проанализировать HTML-код веб-сайта. Как я могу быстро получить доступ к веб-сайтам html? Я знаю, как это работает для UIWebView, но не для WKWebView.
Спасибо за вашу помощь!
Я вхожу на веб-сайт с помощью WKWebView, и теперь я хочу проанализировать HTML-код веб-сайта. Как я могу быстро получить доступ к веб-сайтам html? Я знаю, как это работает для UIWebView, но не для WKWebView.
Спасибо за вашу помощь!
Если вы подождете, пока страница загрузится, вы можете использовать:
webView.evaluateJavaScript("document.documentElement.outerHTML.toString()",
completionHandler: { (html: Any?, error: Error?) in
print(html)
})
Вы также можете ввести некоторый javascript, который вернет вам HTML.
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)
}
}
}
Javascript, который вы можете ввести, выглядит примерно так:
webkit.messageHandlers.didGetHTML.postMessage(document.documentElement.outerHTML.toString());
получить HTML из WKWebView
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
})
установить 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
}
[получить / установить HTML из UIWebView]