2017-01-07 28 views
3

私はSwift初心者で、Web記事からテキストを取得し、新しいテキストファイルを作成し、テキストデータをSwift Playgroundを使用して保存する方法を理解しようとしています。これは可能ですか?アップルスイフトのWebスクレイピング3

主題に関する私はオンラインで見つけることができる唯一の事は、このだった、と私はそれがさえスウィフト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) 

答えて

4

これはSwift 2.3です。 Swift 3ではNSURLではなくURLを使用し、NSURLSessionではなくURLSessionなどを使用してください。NSStringではなくStringも使用します。例えば。

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を解析するために、あなたは(Objective-Cで書かれたが、それでもスウィフトから素晴らしい作品)TFHppleのようなHTMLパーサを使用することを検討すべきであるかNDHpple私が持っていないいる(スウィフトバージョン、 TFHppleと同じくらい自信がありますが、うまくいくでしょう)。

How to Parse HTML on iOSが必要です。日付はついていますが、ウェブサイトのToS、パーサーの使い方などに違反していないことを確認しながら、コンセプトを説明します。あなたが好きなファイル拡張子を使用することができます

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

:この情報をファイルに保存したい場合は


、あなたのような何かを行うことができます。

+0

一部のWebサイトでは、nilを返します。これはなぜでしょうか? – John

+0

また、新しいtextEditファイルにデータを書き込むことはできますか?ありがとう! – John

+0

有効なUTF8(別のエンコーディングを使用するように設計されたもの、間違ってUTF8以外の文字が使用されているもの、あるいはおそらくページからUTF8以外の文字が追加されている可能性があります) )。あなたは確かに手作業でスキャンし、問題のキャラクターを修正/削除してから、解析を進めることができます。しかし、私はこの振る舞いを示しているページには、掻き取りを禁じるサービス条件(商用サイトでは多くのことがあります)があるので、そのことを確認することもできます。再保存、改訂版の回答を参照してください。 – Rob

関連する問題