等待URLSession中的脚本

问题描述 投票:0回答:1

我正在尝试分析此网球统计网站:https://www.ultimatetennisstatistics.com/playerProfile?playerId=3333#

[当我在Chrome中打开页面并对其进行检查时,存在一个类别为“ row”的div元素。

当我在Swift应用程序中发出Url请求时,如下所示:

let task = URLSession.shared.dataTask(with: url) { (dat, response, err) in
            if let error = err{
                print(error)
            }else{
                guard let data = dat else {
                    return
                }
                if let htmlString = NSString(data: data, encoding: String.Encoding.utf8.rawValue) {
                    // continue to work with the html string here 
                }else{
                    print("Error no htmlString")
                }
            }
        }
        task.resume()

并打印出html,在我希望找到“ row”类的div的地方,我得到了一个“ loading”类的div。

我认为这可能是因为该网站上的脚本尚未运行。如何解决此问题并让脚本运行并等待其回调?或者我还能如何解决这个问题?预先谢谢你。

javascript html swift parsing url
1个回答
0
投票

我通过将链接加载到webView中并在短暂的延迟后提取html来解决了此问题。这是我的代码:

let url = URL(string: "https://www.ultimatetennisstatistics.com/playerProfile?playerId=3333#")!
    let request = URLRequest(url: url)
    webview.load(request)
    DispatchQueue.main.asyncAfter(deadline: .now() + 5.0) {
        self.webview.evaluateJavaScript("document.documentElement.outerHTML") { (was, err) in
            if let doc = was {
                print(doc)
            }else{
                print(err!)
            }
        }
    }
© www.soinside.com 2019 - 2024. All rights reserved.