2016-01-12 49 views
18

我使用WKWebView登錄網站,現在我想解析網站的html。我如何在swift中訪問網站的html?我知道它如何適用於UIWebView,但不適用於WKWebView。在Swift中從WKWebview獲取HTML

感謝您的幫助!

回答

38

如果你等到頁面加載,你可以使用:

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()); 
+0

這工作!非常感謝! – MotoxX

+0

修改後的cssRule內部的