2016-01-12 16 views
18

Accedo a un sito Web utilizzando WKWebView e ora vorrei analizzare l'html del sito web. Come posso accedere ai siti Web html in modo rapido? So come funziona per un UIWebView ma non per WKWebView.Ottieni HTML da WKWebview in Swift

Grazie per il vostro aiuto!

risposta

38

Se si attende fino a quando la pagina è caricata è possibile utilizzare:

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

Si potrebbe anche iniettare qualche javascript che restituisce indietro il codice 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) 
      } 
     } 
} 

Il javascript si potrebbe iniettare sembra qualcosa di simile:

webkit.messageHandlers.didGetHTML.postMessage(document.documentElement.outerHTML.toString()); 
+0

che ha funzionato! Molte grazie! – MotoxX

+0

dopo aver modificato cssRule all'interno di