html - 手机网站URL的Swift HTML内容

标签 html swift xcode mobile

我有一个 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/

相关文章:

ios - UITextField 和 UIButton 在 signOut segue swift 后无响应

html - <head> 或带有@import 的CSS 中的谷歌字体?

html - 给定一个 2 行 35 列的表格,如何为第二行的所有 35 个单元格内的文本指定一次字体粗体和颜色?

html - Bootstrap Grid 水平对齐和折叠

ios - 验证收据 iOS

c++ - 在 Objective-C 中使用外部 C++ 头文件

android - 三星设备上的响应式设计只显示背景?

iphone - Swift - NSCoder 和 PHAsset

json - 如何从本地 JSON 文件解析数据并保存在模型类中并在 tableview 中使用

xcode - 即使在将 .m 类文件链接到 Xcode 中的构建阶段后,Apple Mach-O 链接器仍会出现重复符号错误