Swift Retrieve HTML data from Webview

2020-08-04 09:56发布

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.

3条回答
beautiful°
2楼-- · 2020-08-04 10:22

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
}
查看更多
看我几分像从前
3楼-- · 2020-08-04 10:30

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)]")
      }

}
查看更多
倾城 Initia
4楼-- · 2020-08-04 10:42

swift 4:

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

}
查看更多
登录 后发表回答