Obtenir du HTML à partir de WKWebView dans Swift

je me connecte à un site Web en utilisant WKWebView et maintenant je voudrais analyser le html du site web. Comment puis-je accéder aux sites html de swift? Je sais comment ça marche pour UIWebView mais pas pour WKWebView.

merci de votre aide!

22
demandé sur MotoxX 2016-01-12 22:07:51

1 réponses

Si vous attendez jusqu'à ce que la page est chargée, vous pouvez utiliser:

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

vous pouvez aussi injecter du javascript qui vous renvoie le 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 pourriez injecter ressemble à quelque chose comme:

webkit.messageHandlers.didGetHTML.postMessage(document.documentElement.outerHTML.toString());
52
répondu Onato 2017-05-09 10:36:34