2017-04-25 85 views
1

我试图请求一个网站的html代码,并将其用于Xcode(Swift 3.0)和pod Alamofire中的应用程序。在线的HTML代码中,我想要抓取的数据内容是在div类中,它以javascript web插件的形式从Events日历返回数据。由于该网站不是静态的,当我请求html并以字符串的形式输出结果时,我想要的数据不包含在字符串中。出现一则消息,说:使用alamofire + swift获取动态加载的html使用alamofire + swift

<noscript>Your browser must support JavaScript to view this content. Please enable JavaScript in your browser settings then try again. <a href="https://www.trumba.com">Events calendar powered by Trumba</a> </noscript>

我使用Alamofire代码如下所示:

func downloadCalendar(){ 
    Alamofire.request(urlString).responseString { (AlamofireResponse) in 
     print(AlamofireResponse.result.value!) 
    } 
} 

的urlString是实际网页的网址变量。 有没有一种方法可以使用Alamofire将在线html中显示的所有html导入到Xcode中?如果Alamofire无法实现,那么还有另一种使用Swift的方法吗?

回答

0

我试图完成类似的事情,可惜不得要领......

它接缝AlamoFire抓住它获得的第一个响应....

有一种变通方法 - 使用UIWebView的:

static let webView = UIWebView() 
self.webView.loadRequest(URLRequest.init(url: URL.init(string:"http://example.com")!) 

DispatchQueue.main.asyncAfter(deadline: .now()+10.0) {[unowned self] in 
     if let html = self.webView.stringByEvaluatingJavaScript(from: "document.documentElement.outerHTML") 
     {print(html)} 
} 

10.0是完成加载网页数据所需的JavaScript秒约数。

然而,因为:它不是线程安全的,你必须使用一个单身web视图, 进口的UIKit并不能做到这一点的背景 - 它远非完美的解决方案......

这可能是更容易在两者之间设置一个代理网络服务器来为你解析。

干杯!