苹果中的网页抓取 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)
您可以使用任何您想要的文件扩展名。
我是一个 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)
您可以使用任何您想要的文件扩展名。