如何从 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)
})
}
我的项目中有一个 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)
})
}