Swift / 带有 xpath 的 UIWebView / css

Swift / UIWebView with xpath / css

我有一个要在 UIWebView 中显示的网站元素。该元素具有 css 和 xpath 的唯一 ID。可能吗?我怎么能那样做?非常感谢帮助。

我通常使用这个代码:

let url : NSURL! = NSURL(string: "http://blablablabla.com")
webView.loadRequest(NSURLRequest(URL: url))

但我不想显示整个页面。只有具有该 ID 的元素。

我假设您使用的是 UIWebView,而不是较新的 WKWebView。你需要的是一个 HTML 解析器(我选择了 HTMLReader)。下载页面内容后,提取您想要的 div 并将页面的 body 替换为 div.

innerHTML

下面的代码获取 你知道吗 部分 Wikipedia:

import HTMLReader

override func viewDidLoad() {
    super.viewDidLoad()
    loadHTML()
}

func loadHTML() {
    let url = NSURL(string: "https://en.wikipedia.org/wiki/Main_Page")!
    let request = NSURLRequest(URL: url)

    let session = NSURLSession(configuration: NSURLSessionConfiguration.defaultSessionConfiguration())
    let task = session.dataTaskWithRequest(request) { data, response, error in
        guard error == nil else {
            print(error!.localizedDescription)
            return
        }
        guard let data = data else {
            print("data is nil")
            return
        }

        let html = HTMLDocument(data: data, contentTypeHeader: nil)
        if let head = html.firstNodeMatchingSelector("head"),
            didYouKnow = html.firstNodeMatchingSelector("#mp-dyk") {
                let newHTML = "<html><head>\(head.innerHTML)</head><body>\(didYouKnow.innerHTML)</body></html>"
                self.webView.loadHTMLString(newHTML, baseURL: url)
        }
    }
    task.resume()
}

这是相当基础的,但并非 100% 万无一失。看看能不能解决你的问题。