在 WKWebView 中加载单个 HTML 元素



我能够从URL获取HTML并将其加载到WKWebView中,但我只想从HTML加载单个元素。在这种情况下,该元素是旁白,<aside class="col-sm-4 col-md-3 col-lg-3 sidebar">

我用于获取所有 HTML 的代码。

func getHTMLString() -> String? {
let urlString = "https://kyfb.com/(county)"
guard let countyUrl = URL(string: urlString) else {
return nil
}
do {
let htmlString = try String(contentsOf: countyUrl, encoding: .isoLatin1)
return htmlString
} catch let error {
print("Error: (error)")
return nil
}
}

我正在尝试的特定 URL 是 https://kyfb.com/jefferson。那里有一个侧面,里面有我想展示的一切。

从您下载的 HTML 代码中提取元素很容易:

guard let html = getHTML()
else { return }
let regex = try! NSRegularExpression(pattern: "<aside class="col-sm-4 col-md-3 col-lg-3 sidebar">([\s\S]*)</aside>")
let match = regex
.matches(in: html, range: NSRange(html.startIndex..., in: html))
.map {
html.substring(with: Range($0.range, in: html)!)
}
self.webView.loadHTMLString(match.first!, baseURL: nil)

问题是CSS/JS不会被捕获。另一种解决方案是注入Javascript并隐藏除<aside></aside>之外的每个元素

最新更新