Swift:
HTMLの解析
How to: (やり方)
SwiftでHTMLをパースするには、第三者ライブラリの力を借りるのが一般的です。 SwiftSoup
がポピュラーな選択肢の一つです。以下は、SwiftSoupを使用してHTMLからタイトルを取得するシンプルな例です。
import SwiftSoup
let htmlString = "<html><head><title>おはよう、世界!</title></head><body></body></html>"
do {
let doc: Document = try SwiftSoup.parse(htmlString)
if let title = try doc.title() {
print(title) // おはよう、世界!
}
} catch Exception.Error(let type, let message) {
print("Type: \(type)")
print("Message: \(message)")
} catch {
print("error")
}
このコードはHTML文字列を解析し、<title>
タグ内のテキストを取得して出力します。
Deep Dive (深掘り)
HTMLパーシングはWebの始まりから重要な役割を果たしてきました。古くは正規表現を使っていましたが、エラーが起きやすく安定性に欠けていました。だから専門のパーサーが誕生しました。これらはHTMLの階層構造を理解し、堅牢かつ正確にデータを取り出すことができます。
Swiftにおける代わりとしては、NSXMLParser
を用いるのがありますが、HTMLが常にきちんと形式化されている保証はないため、XMLパーサーには向かないことが多いです。SwiftSoup
のようなHTML専用のパーサーは、不整合なマークアップを上手く扱えるのが利点です。
実装面においては、パーサーは内部的にDOM(Document Object Model)ツリーを構築し、操作やデータの抽出を行います。パフォーマンスやメモリ使用に関する考慮も重要です。大規模なHTMLドキュメントを扱う場合、効率的に処理することが挑戦となります。
See Also (関連情報源)
- SwiftSoup GitHubリポジトリ:https://github.com/scinfu/SwiftSoup
- AppleのNSXML解析器ドキュメント:https://developer.apple.com/documentation/foundation/nsxmlparser