Как получить текст с веб-страницы в macOS через Swift? - PullRequest
0 голосов
/ 03 мая 2018

Как получить строку текста, подобную этой:

Simple Text Example...

со страницы Safari в macOS через Swift 4?

@IBOutlet weak var label: NSTextField!
@IBOutlet weak var webView: WKWebView!

override func viewDidLoad() {
    super.viewDidLoad()
    let string = "http://127.0.0.1:8080/101"
    let url = NSURL(string: string)
    let request = URLRequest(url: url! as URL)
    self.webView.load(request as URLRequest)

    //this doesn't work
    label.stringValue = webView.webFrame.frameElement.innerText
}

Вот структура HTML:

<html>
  <head></head>
    <body>
      Simple Text Example...
    </body>
</html>

UPDATE:

Я пробовал следующий метод, но он имеет возврат Void ...

webView.evaluateJavaScript("document.body.innerText") { (result, error) in
    if error != nil {
        print(result)
    }
}

Ответы [ 2 ]

0 голосов
/ 03 мая 2018

Вы должны проверить externalhtml и innerhtml, textContent и многие другие теги, подобные этому:

if let htmlOuter = self.webView.stringByEvaluatingJavaScript(from: "document.body.outerHTML"){
}

Или

if let htmlInner = self.webView.stringByEvaluatingJavaScript(from: "document.body.innerHTML"){

}

Или

if let content = self.webView.stringByEvaluatingJavaScript(from: "document.body. textContent"){

}
0 голосов
/ 03 мая 2018

для iOS, в методе делегата веб-просмотра

func webViewDidFinishLoad(_ webView: UIWebView) {  
    var string = webView.stringByEvaluatingJavaScript(from: "document.body.textContent")
    print(string)
}

для macOS, в делегате навигации по веб-представлению:

override func viewDidLoad() {
    webview.nagivationDelegate = self
    ...
}

func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
    webView.evaluateJavaScript("document.body.textContent") { (string, error) in
            print(string)
    }
}
...