Swift Retrieve HTML data from Webview

2020-08-04 10:25发布

问题:

I am trying to obtain the data within the header of a web page that is being displayed in a UIWebView.

How do I get the raw (unformatted) HTML string from the UIWebView?

Also, I'm using iOS 9.

My question is similar to Reading HTML content from a UIWebView , but this post is from 6 years ago.

回答1:

From the top answer on the question you linked:

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

would translate into Swift:

let html = yourWebView.stringByEvaluatingJavaScriptFromString("document.body.innerHTML")

stringByEvaluatingJavaScriptFromString returns a optional, so you'd probably want to later use an if let statement:

if let page = html {
    // Do stuff with the now unwrapped "page" string
}


回答2:

swift 4:

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

}


回答3:

Don't forgot get the html when the page render finished, if you got html too early, the result will be empty.

func webViewDidFinishLoad(webView: UIWebView) {
     print("pageDidFinished")
     if let html = webView.stringByEvaluatingJavaScriptFromString("document.documentElement.outerHTML") {
             print("html=[\(html)]")
      }

}