Я пытался получить текстовое содержимое любой веб-страницы с помощью:
func getTextContentFromUrl (url: URL) -> String? {
var content = ""
do {
content = try String(contentsOf: url)
} catch {
return nil
}
return content
}
Это прекрасно работает, если веб-страница содержит тексты внутри тегов html / body, но не если веб-страница содержит только javascript, например: https://twitter.com/search?q=tesla&src=typed_query
Я знаю о Swifter, но я не могу запрограммировать сотни API для доступа к любому веб-сайту: twitter, facebook, linkedin, quora, amazon et c. Очевидно, что представления WKWebView знают, как отображать и печатать их текст, поэтому я попытался получить текстовое содержимое из WKWebView:
(1) К сожалению, следующий метод всегда возвращает "", хотя я вызываю его из webView ( _ webView: WKWebView, didFini sh навигация: WKNavigation!):
func getTextContentFromWebView () -> String {
var content = ""
myWKWebView.evaluateJavaScript("document.documentElement") { (string, error) in
if string != nil {
content = string as! String
}
}
return content
}
Я пробовал варианты этого кода, опубликованные в сети, такие как «document.body.textContent», «document.body». innerText "," document.body.outer HTML "," document.body.inner HTML ", но этот метод всегда возвращает" "...
(2) Я также пытался использовать буфер обмена для получения текстового содержимого (myWKWebView.SelectAll (), myWWKWebView.copy ()), но myWKWebView.copy () всегда отправляет исключение (даже если этот метод должен работать для любого NSView, как указано в документации Apple):
2020-03-13 15:21:26.251341+0100 Text Miner[7313:603242] -[WKWebView copyWithZone:]: unrecognized selector sent to instance 0x101b815c0
Если кто-либо может вручную скопировать, вставить и распечатать текстовое содержимое любой веб-страницы через любой веб-браузер независимо от ее содержимого (html / javascript), то должен быть общий c easy и д ocumented способ получить текст из WKWebView, не должно быть?