如何从 webView 解析数据以在代码中使用

How to parse data from webView to use in code

我的项目中有一个 WKWebView 执行一些操作,在 WKWebView 中单击提交后,它会在 javaScript 中显示我需要解析的 JSON 数据我的代码。

使用这段代码可以得到字符串形式的HTML数据

在Objective C

NSString *html = [yourWebView stringByEvaluatingJavaScriptFromString: @"document.body.innerHTML"];

在Swift

let yourWebView = UIWebView();
let html : String = yourWebView.stringByEvaluatingJavaScript(from: "document.body.innerHTML") ?? "";

你必须分析你收到的东西,然后做相应的处理。

在您的情况下,您可能会在字符串中获得完整的 json。

您可以获得UIWebView页面的源代码。

func webView(webView: WKWebView, didFinishNavigation navigation: WKNavigation!) {
    webView.evaluateJavaScript("document.getElementsByTagName('html')[0].innerHTML") { innerHTML, error in
        print(innerHTML!)
    }
}

您的 JSON 出现在正文标签中,然后使用此代码或从网络端更改为正文标签中的 JSON

if let html = webView.stringByEvaluatingJavaScript(from: "document.body.innerHTML"){

            let data = html.data(using: .utf8)!
            do {
                if let jsonArray = try JSONSerialization.jsonObject(with: data, options : .allowFragments) as? Dictionary<String,Any>
                {
                    print(jsonArray) // use the json here
                } else {
                    print("bad json")
                }
            } catch let error as NSError {
                print(error)
            }
        }

Swift 5.1 例子:

func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
        print("redirect didFinish")
        print(webView)
        webView.evaluateJavaScript("document.documentElement.outerHTML.toString()",
                                   completionHandler: { (html: Any?, error: Error?) in
                                    print(html as Any)
        })
    }