【问题标题】:Is it possible to extract the source code of a URL loaded in webview?是否可以提取 webview 中加载的 URL 的源代码?
【发布时间】:2016-05-31 03:40:54
【问题描述】:

这听起来很简单,我知道我会被告知只获取 url 会话的内容。但我特别想知道源代码是否可以从浏览器的最终呈现(post-javascript/JSON 格式)中导出

编辑:我在获取已处理后的内容时遇到问题。当我使用 swift/objective-c 或 Java 下载 url 的内容时,内容字符串具有基于 Json 搜索首选项的搜索结果的占位符。但是,在浏览器中,右键单击并选择“查看源代码”可以看到完整的结果页面。我需要一种以编程方式获取这个经过 js 处理的内容的方法。

编辑:我已经在 webView 中加载了代码。这是我的代码:

func loadAddressURL() {
    let url = "https://www.adomain.com/apath"
    let URL = NSURL(string: url)!
    let request = NSURLRequest(URL: URL)
    webView.mainFrame.loadRequest(request)
}

【问题讨论】:

  • 请提供更多相关信息。你想在网页中运行 JavaScript 还是什么?
  • 所以你不想要源代码,你想要执行它的结果。 Java 不这样做。
  • 谢谢。我将用 swift 尝试 Code Different 的答案。

标签: ios macos swift2 webkit


【解决方案1】:

使用WKWebView,这是Apple 的recommended class 来嵌入Web 视图以获取新代码。然后你可以通过它执行 Javascript 来获取渲染后的 HTML:

// self.webView is a WKWebView

// In viewDidLoad() or applicationDidFinishLaunching()
self.webView.navigationDelegate = self

func webView(webView: WKWebView, didFinishNavigation navigation: WKNavigation!) {
    webView.evaluateJavaScript("document.getElementsByTagName('html')[0].innerHTML") { innerHTML, error in
        print(innerHTML!)
    }
}

【讨论】:

  • webView 加载 URL 时,不会调用您详述的函数。我已经编辑了我的 OP,以包括我如何在 webView 中加载 URL。
  • 因为您使用的是UIWebView 而不是WKWebView。苹果推荐后者
猜你喜欢
  • 1970-01-01
  • 2011-03-29
  • 2016-06-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-07
相关资源
最近更新 更多