web-dev-qa-db-fra.com

Obtenez HTML de WKWebview dans Swift

Je me connecte à un site Web en utilisant WKWebView et maintenant je voudrais analyser le code HTML du site Web. Comment puis-je accéder aux sites Web html en swift? Je sais comment cela fonctionne pour un UIWebView mais pas pour WKWebView.

Merci de votre aide!

35
MotoxX

Si vous attendez que la page soit chargée, vous pouvez utiliser:

webView.evaluateJavaScript("document.documentElement.outerHTML.toString()", 
                           completionHandler: { (html: Any?, error: Error?) in
    print(html)
})

Vous pouvez également injecter du javascript qui vous renvoie le code 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)
            }
        }
}

Le javascript que vous pouvez injecter ressemble à ceci:

webkit.messageHandlers.didGetHTML.postMessage(document.documentElement.outerHTML.toString());
72
Onato

Un autre exemple

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
})

obtenez HTML de UIWebView
mettre du HTML dans UIWebView
mettre du HTML dans WKWebView

0
yoAlex5