我有一个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。
我不是在寻找针对该特定网站的解决方法,而是在寻求一种通用解决方案,因此,鉴于移动网站的任何网址,它都不默认为我提供桌面网站的html。
答案 0 :(得分:1)
如果您在iOS中使用Viewcontroller来获取HTML,则可以使用隐藏的 WKWebView 作为替代,并实现 WKNavigationDelegate ,该方法具有didFinish方法,您可以在其中使用< 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)
}
}
}