苹果中的网页抓取 swift 3

Web scraping in apple swift 3

我是一个 Swift 初学者,我正在尝试弄清楚如何从网络文章中检索文本、创建一个新的文本文件并将文本数据保存到其中(使用 Swift 游乐场)。这可能吗?

关于这个主题,我在网上唯一能找到的就是这个,我什至不认为它是为 Swift 3 写的:

P.S。如果我的问题需要更多详细信息,请告诉我而不是搁置。谢谢!

import Cocoa

var url = NSURL(string: "http://finance.yahoo.com/news/tv-news-ces-2017-120931816.html")

if url != nil {

    let task = NSURLSession.sharedSession().dataTaskWithURL(url!, completionHandler: { (data, response, error) -> Void in

        print(data)

        if error == nil {

            var urlContent = NSString(data: data, encoding: NSUTF8StringEncoding) as NSString!

            print(urlContent)

那是 Swift 2.3。在 Swift 3 中使用 URL 而不是 NSURL 并使用 URLSession 而不是 NSURLSession,等等。您还可以使用 String 而不是 NSString。例如

let url = URL(string: "http://finance.yahoo.com/news/tv-news-ces-2017-120931816.html")!

let task = URLSession.shared.dataTask(with: url) { data, response, error in
    guard let data = data, error == nil else {
        print("\(error)")
        return
    }

    let string = String(data: data, encoding: .utf8)

    print("\(string)")
}

task.resume()

如果您要在操场上执行此操作,请记住这是异步运行的,因此您需要设置 needsIndefiniteExecution

import PlaygroundSupport

PlaygroundPage.current.needsIndefiniteExecution = true

要实际解析 HTML,您应该考虑使用像 TFHpple (written in Objective-C, but still works great from Swift) or NDHpple 这样的 HTML 解析器(Swift 版本,其中我没有那么多与 TFHpple 一样有信心,但可能会很好地工作)。

您可能想看看 How to Parse HTML on iOS。它已过时,但会引导您完成概念(确保您没有违反网站的服务条款、如何使用解析器等)。


如果你想把它保存到一个文件中,你可以这样做:

let fileURL = try! FileManager.default.url(for: .documentDirectory, in: .userDomainMask, appropriateFor: nil, create: false)
    .appendingPathComponent("test.dat")
try! data.write(to: fileURL)

您可以使用任何您想要的文件扩展名。