【问题标题】:Swift Retrieve HTML data from WebviewSwift 从 Webview 中检索 HTML 数据
【发布时间】:2016-02-18 06:45:43
【问题描述】:

我正在尝试获取 UIWebView 中显示的网页标题中的数据。

如何从 UIWebView 获取原始(未格式化的)HTML 字符串?

另外,我使用的是 iOS 9。

我的问题类似于 Reading HTML content from a UIWebView ,但这篇文章是 6 年前的。

【问题讨论】:

    标签: html ios swift uiwebview


    【解决方案1】:

    来自您所链接问题的top answer

    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 代码获得了 HTML 代码,但是在我在 web 视图中提交表单后,我尝试使用相同的代码来获取 HTML 代码。它仍然显示与上一页相同的 HTML 代码。你知道问题可能是什么吗?我也试过webView.reload(),但还是没变
    • 只要等到页面completely loaded 再调用该函数,并且您使用的是相同的网页视图,它应该可以工作。
    【解决方案2】:

    迅速 4:

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

    【讨论】:

      【解决方案3】:

      页面渲染完成后不要忘记获取html,如果太早获取html,结果会为空。

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多