

私はSwiftでサイトのHTMLを取得し、Stringにして出力するところまでできたのですが、そこから要素を取り出す方法がわかりません。  
例えばAppleのホームページを指定したら「オールスクリーンのデザイン。iPhoneで最も長いバッテリー駆動時間。」などの要素を取得したいです。  
つまりHTMLから不要な情報を削除するということです。  
おそらく<>の中を削除するというようにすればいいのだと思うのですが、やり方を調べてもヒットしませんでした。  
わかる方がいらっしゃったら教えてください。

追記:やはりパーサーを使うべきでしょうか

※初投稿でよくわかっていないので、やり方が違っても教えてください


CC BY-SA 4.0
2019-03-27T02:39:17.593
53752
2019-03-27T11:54:46.083
2019-03-27T04:05:43.007
19110
32684
question
swift html xcode
HTMLから要素を取り出す


取得したHTMLソースから表示されるテキストを文字列として取得したいのであれば、`AttributedString`を使う方法があります。

以下は、OS X 10.14.4 & Xcode 10.2 の`playground`で動作する例です。

[code]

    import Cocoa
    
    let html = """
    <html>
        <title>test title</title>
        <body>
            <p>This is a test</p>
            <p>This is a test two</p>
        </body>
    </html>
    """
    
    if let htmlData = html.data(using: String.Encoding.utf8) {
        do {
            if let attributedHTMLStr: NSAttributedString = try NSAttributedString(data: htmlData, options: [NSAttributedString.DocumentReadingOptionKey.documentType : NSAttributedString.DocumentType.html], documentAttributes: nil) {
                print(attributedHTMLStr.string)  // attributedHTMLStr.string が、取得したいテキスト要素
            }
    
        } catch let (error) {
            print(error.localizedDescription)  //  例外が起きたとき、その例外の内容を表示するためのprint文
        }
    }
    
[/code]

`AttributedString`クラスのインスタンスのプレーンテキストを参照する`string`というプロパティで取得出来ますので、  
今回は`NSAttributedString`のインスタンスは`attributedHTMLStr`ですので、

`let str: String = attributedHTMLStr.string`  
で変数`str`に`html`ソースからタグや図を取り除いた文字列が得られます。


CC BY-SA 4.0
2019-03-27T11:54:46.083
53764
2019-03-27T11:54:46.083
14745
53752
answer