Swift HTML-контент URL мобильного сайта - PullRequest
0 голосов
/ 30 сентября 2018

У меня есть 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 сайта рабочего стола.

1 Ответ

0 голосов
/ 30 сентября 2018

Если вы используете Viewcontroller в iOS для получения HTML, вы можете использовать скрытый WKWebView в качестве альтернативы и реализовать WKNavigationDelegate , который имеет метод didFinish, в котором вы можете использовать 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)
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...