2016-01-12 10 views
18

Loguję się na stronie internetowej przy użyciu WKWebView, a teraz chciałbym parsować HTML strony. Jak mogę uzyskać szybki dostęp do strony internetowej html? Wiem, jak to działa dla UIWebView, ale nie dla WKWebView.Pobierz kod HTML z WKWebview w Swift

Dzięki za pomoc!

Odpowiedz

38

Jeśli czekać, aż strona się załaduje można użyć:

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

Można również wprowadzić niektóre javascript, która zwraca wykonać kopię 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 można wstrzykiwać wyglądał:

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

który pracował! Wielkie dzięki! – MotoxX

+0

po zmodyfikowaniu cssRule wewnątrz wewnętrznego -