Javascript 在URLSession中等待脚本
我正在尝试解析此网球统计网站: 当我在Chrome中打开页面并检查它时,有一个div元素,其类为:“row” 当我在Swift应用程序中发出Url请求时,如下所示:Javascript 在URLSession中等待脚本,javascript,html,swift,parsing,url,Javascript,Html,Swift,Parsing,Url,我正在尝试解析此网球统计网站: 当我在Chrome中打开页面并检查它时,有一个div元素,其类为:“row” 当我在Swift应用程序中发出Url请求时,如下所示: let task = URLSession.shared.dataTask(with: url) { (dat, response, err) in if let error = err{ print(error) }else{
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
我想这可能是因为网站上的脚本还没有运行。
如何修复此问题并让脚本运行并等待回调?
或者我如何才能解决这个问题?
提前谢谢。我通过在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!)
}
}
}
编辑:
另一种方法是使用无头浏览器