当前位置: 首页 > 面试题库 >

在Swift中从WKWebview获取HTML

皮嘉德
2023-03-14
问题内容

我使用WKWebView登录到一个网站,现在我想解析该网站的html。如何快速访问HTML网站?我知道它如何用于UIWebView但不适用于WKWebView。

谢谢你的帮助!


问题答案:

如果您等到页面加载完毕,则可以使用:

webView.evaluateJavaScript("document.documentElement.outerHTML.toString()", 
                           completionHandler: { (html: Any?, error: Error?) in
    print(html)
})

您还可以注入一些JavaScript,使您返回HTML。

let script = WKUserScript(source: javascriptString, injectionTime: injectionTime, forMainFrameOnly: true)
userContentController.addUserScript(script)
self.webView.configuration.userContentController.addScriptMessageHandler(self, name: "didGetHTML")

…

func userContentController(userContentController: WKUserContentController,
        didReceiveScriptMessage message: WKScriptMessage) {

        if message.name == "didGetHTML" {
            if let html = message.body as? String {
                print(html)
            }
        }
}

您可以注入的javascript如下所示:

webkit.messageHandlers.didGetHTML.postMessage(document.documentElement.outerHTML.toString());


 类似资料:
  • 问题内容: 使用来获取Cookie 似乎很简单,它似乎将Cookie存储在其他位置。 我做了一些研究,然后从对象中获取了一些Cookie 。但是,其中不包含: 奇怪的是,ios 9中还有一个类负责管理中的cookie ,但是,该类不包含用于检索cookie数据的公共方法: 是否有解决方法来获取Cookie数据? 问题答案: 最后,对于登陆iOS的11。 https://developer.appl

  • 问题内容: 我正在使用Web编程语言构建应用程序,并希望在用户单击HTML按钮时启动相机。由于我希望相机视图是自定义视图,因此需要使用Swift进行设计。因此,当用户单击此HTML按钮时,我想在Swift中“捕获”此单击,以便启动本机相机视图。 我知道可以用WKWebview完成,但是我真的不知道该怎么做。 例如,我的Javascript(jQuery)代码可能如下所示: 你能帮我做到吗? 谢谢。

  • 问题内容: 如何从CVPixelBufferRef获取RGB(或任何其他格式)像素值?香港专业教育学院尝试了许多方法,但没有成功。 问题答案: 是不安全的可变指针,或更确切地说是。将指针转换为更特定的类型后,即可轻松访问内存: 确保使用正确的类型(8、16或32位unsigned int)。这取决于视频格式。最有可能是8位。 缓冲区格式的更新: 您可以在初始化实例时指定格式。您基本上可以选择: B

  • 问题内容: 我一直在尝试添加一些代码以在键盘出现时向上移动视图,但是,在尝试将Objective- C示例转换为Swift时遇到了问题。我已经取得了一些进步,但是我仍然停留在一条特定的线上。 这是我一直关注的两个教程/问题: 如何使用Swift http://www.ioscreator.com/tutorials/move-view-when-keyboard-appears 在键盘出现时向上移

  • 问题内容: 当用户单击UILocalNotification时,我试图迅速从应用程序委托中加载特定的ViewController。我已经知道这是在此函数中调用的: 但是当我尝试访问一个打开的ViewController时,我认为它返回null,因为我的应用程序崩溃了。这是我正在尝试的: 在popToViewController行上崩溃了。 问题答案: 您可以尝试: 斯威夫特3:

  • 问题内容: 我有一个像这样的数组: 我想从该数组中获取3个随机元素。我来自C#,但是我不确定该从哪里开始。我想我应该先对数组进行随机排序,然后再从中选择前3个项目? 我尝试使用以下扩展名将其改组: 但随后在“ shuffle()”的位置说“’()’不可转换为’[Int]’”。 为了挑选一些元素,我使用: 到目前为止看起来还不错。 如何洗牌?还是有人对此有更好/更优雅的解决方案? 问题答案: Xco