我有许多必须从网站上抓取的 URL。从捆绑文件中获取它们后,我创建了一个包含许多 URL 的数组。我将这个数组传递给我的名为 scrapeSanatcilar 的函数,并在那里添加了完成处理程序,但出现了问题。我只想在数组填充数据后从数组中获取一些随机元素:(
我在 viewdidLoad 中调用了 scrapeWithPage。
func scrapeWithPage(){
let path = Bundle.main.path(forResource: "SanatciLink", ofType: "txt")!
let text = try! String(contentsOfFile: path, encoding: String.Encoding.utf8)
var links = text.components(separatedBy: CharacterSet.newlines)
links.removeLast()
scrapSanatcilar(links: links) { (result) in
print(result.randomElement())
}
}
func scrapeSanatcilar(links: [String], completionHandler: @escaping (_ result: [String]) -> Void){
for link in links{
let baseUrl = link
let url = URL(string: baseUrl)!
let task = URLSession.shared.dataTask(with: url) { (data, response, error) in
guard let data = data else {
self.makeAlert(titleInput: "Hata!", messageInput: "Üzgünüz ancak bir sorun oluştu lütfen daha sonra tekrar deneyin")
return
}
guard let htmlString = String(data: data, encoding: .utf8) else {
self.makeAlert(titleInput: "Hata!", messageInput: "Üzgünüz ancak bir sorun oluştu lütfen daha sonra tekrar deneyin")
return
}
guard let songs: Elements = try? SwiftSoup.parse(htmlString).getElementsByClass("artist-list") else {return}
do{
let hrefs : Elements = try songs.select("a")
for href in hrefs{
self.scrapeSanatciNameWithPageLinks.append(try href.text())
self.scrapeSarkiNameWithPageLinks.append(try href.attr("href"))
}
}catch{
}
};task.resume()
}
completionHandler(self.scrapeSanatciNameWithPageLinks)
}