我有一个 URL,我正在尝试通过以下方式获取网站的 HTML 内容:
func getHtml(_ urlString: String) -> String? {
guard let url = URL(string: urlString) else {
return nil
}
do {
let html = try String(contentsOf: url, encoding: .ascii)
return html
} catch let error {
print("Error: \(error)")
return nil
}
}
if let html = getHtml("https://m.youtube.com/") {
print(html)
}
我的问题是,这让我获得了网站桌面版的 html,但我需要移动版的 html。
我不是在为这个特定网站寻找解决方法,而是在寻找通用解决方案,这样一来,给定移动网站的任何 URL,它不会默认为我提供桌面网站的 html。
最佳答案
如果您在 iOS 中使用 Viewcontroller 获取 HTML,您可以使用隐藏的 WKWebView 作为替代方案,并实现具有 didFinish 方法的 WKNavigationDelegate,您可以在其中使用 < strong>webView.evaluateJavaScript。当 wkwebview 从移动设备加载时,您将获得移动版本的 html。这是代码示例。
import UIKit
import WebKit
class YourViewController: UIViewController, WKNavigationDelegate {
let webView = WKWebView()
override func viewDidLoad() {
super.viewDidLoad()
}
@IBAction func BtnClicked(_ sender: Any) {
loadWeb(url: "https://m.youtube.com/")
}
func loadWeb(url: String) {
if let myURL = URL(string: url) {
let request = URLRequest(url: myURL)
webView.navigationDelegate = self
webView.load(request)
}
}
func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
webView.evaluateJavaScript("document.documentElement.outerHTML") { (data, error) in
//use html data
print("data", data, error.debugDescription)
}
}
}
关于html - 手机网站URL的Swift HTML内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52575429/