我使用WKWebView登录到一个网站,现在我想解析该网站的html.如何在swift中访问网站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());

Swift相关问答推荐

Vapor - 流利的,将对象保存到 PostgreSQL

如何将一个 SwiftUI 视图作为变量传递给另一个视图结构

SwiftUI 中 ObservedObject 和 StateObject 有什么区别

如何在 SwiftUI 中打开 ImagePicker?

如何在 SwiftUI 中显示来自 url 的图像

我可以在 Swift 中为泛型类型 T 分配默认类型吗?

Swift 用户界面.如何更改 TextField 的占位符 colored颜色 ?

SwiftUI-> 线程 1:致命错误:未找到 MyObject.Type 类型的可观察对象(工作表中的 EnvironmentObject)

SwiftUI 中的 @Binding 和 ForEach

无法从构建环境获取 Google 服务文件中的 GOOGLE_APP_ID

Xcode 11 beta swift ui 预览未显示

如何在 SwiftUI 中修改 List 的背景 colored颜色 ?

Xcode 一直显示:-1: SWIFT_VERSION '5.0' is unsupported, 支持的版本是:3.0, 4.0, 4.2.任何解决方案?

Xcode 构建错误 - 多个命令生成 .o,目标“ProjectCoreData”具有两次列出的 Swift 源文件的编译命令

Swift 中的 CGSize sizeWithAttributes

SSL_ERROR_SSL(1):库内操作失败

“${PODS_ROOT}/SwiftLint/swiftlint”使用 Xcode 10 导致“Command PhaseScriptExecution failed with a nonzero exit code”

在 Swift 中计算两个日期之间的差异

为什么包装 os_log() 会导致无法正确记录双打?

设置 statusbarStyle(在 iOS 9.0 中已弃用)