WKWebViewを使用してWebサイトにログインしましたが、Webサイトのhtmlを解析したいと思います。迅速にウェブサイトのhtmlにアクセスするにはどうすればよいですか? UIWebViewではどのように機能するかを知っていますが、WKWebViewでは機能しません。
ご協力いただきありがとうございます!
ページがロードされるまで待つ場合、次を使用できます。
webView.evaluateJavaScript("document.documentElement.outerHTML.toString()",
completionHandler: { (html: Any?, error: Error?) in
print(html)
})
HTMLを返すjavascriptを挿入することもできます。
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());
もう一つの例
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
})