gpt4 book ai didi

javascript - 加载后获取 HTML 内容

转载 作者:行者123 更新时间:2023-12-01 21:52:35 24 4
gpt4 key购买 nike

我有一个 Share Extension我得到了HTML像这样:

@objc func actionButtonTapped(){

var html: String?

if let item = extensionContext?.inputItems.first as? NSExtensionItem,
let itemProvider = item.attachments?.first,
itemProvider.hasItemConformingToTypeIdentifier("public.url") {
itemProvider.loadItem(forTypeIdentifier: "public.url", options: nil) { (url, error) in
if (url as? URL) != nil {

html = (self.getHTMLfromURL(url: url as? URL))

self.doStuff(html: html)
}
}
}
}

问题:

我得到了 HTML,但没有得到完整的内容。我如何获得完整的 HTML - content网站的?

更新:

原因是我想刮 price任何产品,但某些网站没有 price加载到第一个 HTML-get ...

这个 link是一个很好的例子。如果您单击价格并检查它,您可以在 class 中看到它。 current-price .但是,如果我检索 HTML用上面的方法,这个 class未显示。

最佳答案

此函数将从后台线程上的 url 字符串中找到 HTML(以免锁定您的 UI),然后在处理后您可以在主线程上更新您的 UI:

func getHtml(_ urlString: String, completion: @escaping (String?, Error?) -> Void) {
DispatchQueue.global(qos: .userInitiated).async(execute: {
guard let url = URL(string: urlString) else {
print("URLError: \(urlString) doesn't seem to be a valid URL")
return completion(nil, URLError.init(URLError.Code.badURL))
}

do {
let html = try String(contentsOf: url, encoding: .ascii)
print("HTML: \(html)")
return completion(html, nil)
} catch let error {
print("Error: \(error)")
return completion(nil, error)
}
})
}

用法:
getHtml("https://www.google.com", completion: { html, error in
if let e = error {
print(e)
// handle your error
return
}
print(html as Any)
DispatchQueue.main.async {
//update your UI on the main thread
}
})

更新:

你真的应该在服务器端抓取网页内容。 iOS 不会让您在不提供 WKWebView 的情况下执行此操作。

在 iOS 中,如果您想要 Chrome 的“检查”功能之类的数据,则需要在 WKWebView 的 didFinish 函数中加载 javascript:
func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
let doc = webView.evaluateJavaScript("document.documentElement.outerHTML", completionHandler: { html, error in
print(html)
})
}

关于javascript - 加载后获取 HTML 内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61490069/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com