首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >苹果的网络刮擦3

苹果的网络刮擦3
EN

Stack Overflow用户
提问于 2017-01-07 02:02:48
回答 1查看 3.8K关注 0票数 4

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

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

如果我的问题需要更多的细节,请告诉我,而不是搁置。谢谢!

代码语言:javascript
复制
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)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-01-07 02:31:04

那是斯威夫特2.3。在Swift 3中,使用URL代替NSURL,使用URLSession而不是NSURLSession等等。您也可以使用String而不是NSString。例如。

代码语言:javascript
复制
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

代码语言:javascript
复制
import PlaygroundSupport

PlaygroundPage.current.needsIndefiniteExecution = true

要真正解析HTML,您应该考虑使用像TFHpple这样的HTML解析器(用Objective编写,但仍然能很好地使用Swift)或NDHpple ( Swift版本,其中我没有TFHpple那么有信心,但可能工作得很好)。

你可能想看看如何在iOS上解析HTML。它是过时的,但会带您浏览这些概念(确保您没有违反网站的ToS、如何使用解析器等等)。

如果要将其保存到文件中,可以执行以下操作:

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

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

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41517065

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档