Swift从Webview检索HTML数据
我试图获取在UIWebView中显示的网页标题中的数据 如何从UIWebView获取原始(未格式化)HTML字符串 另外,我使用的是iOS9 我的问题类似于,但这篇文章是6年前写的 关于您链接的问题:Swift从Webview检索HTML数据,html,ios,swift,uiwebview,Html,Ios,Swift,Uiwebview,我试图获取在UIWebView中显示的网页标题中的数据 如何从UIWebView获取原始(未格式化)HTML字符串 另外,我使用的是iOS9 我的问题类似于,但这篇文章是6年前写的 关于您链接的问题: NSString *html = [yourWebView stringByEvaluatingJavaScriptFromString: @"document.body.innerHTML"]; 将转化为Swift:
NSString *html = [yourWebView stringByEvaluatingJavaScriptFromString:
@"document.body.innerHTML"];
将转化为Swift:
let html = yourWebView.stringByEvaluatingJavaScriptFromString("document.body.innerHTML")
stringByEvaluatingJavaScriptFromString
返回一个可选值,因此您可能希望稍后使用if let
语句:
if let page = html {
// Do stuff with the now unwrapped "page" string
}
从您链接的问题的列表中:
NSString *html = [yourWebView stringByEvaluatingJavaScriptFromString:
@"document.body.innerHTML"];
将转化为Swift:
let html = yourWebView.stringByEvaluatingJavaScriptFromString("document.body.innerHTML")
stringByEvaluatingJavaScriptFromString
返回一个可选值,因此您可能希望稍后使用if let
语句:
if let page = html {
// Do stuff with the now unwrapped "page" string
}
swift 4:
if let html = self.webView.stringByEvaluatingJavaScript(from: "document.body.innerHTML"){
}
swift 4:
if let html = self.webView.stringByEvaluatingJavaScript(from: "document.body.innerHTML"){
}
不要忘记在页面渲染完成时获取html,如果过早获取html,结果将为空
func webViewDidFinishLoad(webView: UIWebView) {
print("pageDidFinished")
if let html = webView.stringByEvaluatingJavaScriptFromString("document.documentElement.outerHTML") {
print("html=[\(html)]")
}
}
不要忘记在页面渲染完成时获取html,如果过早获取html,结果将为空
func webViewDidFinishLoad(webView: UIWebView) {
print("pageDidFinished")
if let html = webView.stringByEvaluatingJavaScriptFromString("document.documentElement.outerHTML") {
print("html=[\(html)]")
}
}
好的,我确实使用翻译后的swift代码获得HTML代码,但是在我在web视图中提交表单之后,我尝试使用相同的代码获得HTML代码。它仍然显示与上一页相同的HTML代码。你知道可能是什么问题吗?我还尝试了webView.reload(),但它仍然没有改变,只要您在调用函数之前等待页面,并且您使用的是相同的web视图,它应该可以工作。好的,我确实使用翻译后的swift代码获取HTML代码,但在我在web视图中提交表单后,我尝试使用相同的代码获取HTML代码。它仍然显示与上一页相同的HTML代码。你知道可能是什么问题吗?我还尝试了webView.reload(),但它仍然没有改变,只要您在调用函数之前等待页面,并且您使用的是相同的web视图,它就应该可以工作。