在Swift中登录站点,然后下载文件

在Swift中登录站点,然后下载文件,swift,file,download,urlsession,Swift,File,Download,Urlsession,我正在从网站下载CSV文件。我需要在登录时下载此文件。CSV文件提供玩家对幻想运动的预测。当你下载该文件时,它将为你提供五名玩家。但是,如果您购买了高级服务,您将获得所有玩家预测。我购买了premium服务,因此,我尝试在登录到我的帐户时下载此文件 下面的代码仅用五名玩家下载CSV文件。如何登录我的帐户,然后下载此文件 guard let url = URL(string: "https://rotogrinders.com/projected-stats/nba-player.csv?

我正在从网站下载CSV文件。我需要在登录时下载此文件。CSV文件提供玩家对幻想运动的预测。当你下载该文件时,它将为你提供五名玩家。但是,如果您购买了高级服务,您将获得所有玩家预测。我购买了premium服务,因此,我尝试在登录到我的帐户时下载此文件

下面的代码仅用五名玩家下载CSV文件。如何登录我的帐户,然后下载此文件

    guard let url = URL(string: "https://rotogrinders.com/projected-stats/nba-player.csv?site=fanduel") else {  return }

    let config = URLSessionConfiguration.default

    // I don't know what I'm doing here. Also, the user name and password is not correct
    let credential = URLCredential(user: "joe", password: "12345", persistence: .forSession)
    let protectionSpace = URLProtectionSpace(host: "rotogrinders.com", port: 443, protocol: "https", realm: "Restricted", authenticationMethod: NSURLAuthenticationMethodHTTPBasic)

    // I don't know what I'm doing here either.
    let credentialStorage = URLCredentialStorage()
    credentialStorage.set(credential, for: protectionSpace)

    config.urlCredentialStorage = credentialStorage

    let task = URLSession(configuration: config).dataTask(with: url) { data, response, error in
        guard data != nil else {        return  }
        guard let rows = NSString(data: data!, encoding: String.Encoding.utf8.rawValue)?.components(separatedBy: "\n") else {   return  }
        print(rows)
    }

    task.resume()

问题是这个站点没有API。它们特别不允许您尝试执行的用例

然而,Python中有一些很棒的工具,可以让您完成您想要做的事情。看看scrapy:


你不能期望所有的网站服务都像你上面写的那样简单,因为它们可能使用一个中间件API层,这是一个自定义API,带有自定义登录函数,调用这些函数可以保护其主数据库和数据不受ppl的影响,而ppl正是你想要做的。