Perpustakaan Swift Gratis untuk Mem-parse dan Memanipulasi Data HTML
Perpustakaan Swift Parsing HTML/XML Open Source yang Menyediakan API Swift Bersih untuk Parsing dan Menelusuri Dokumen HTML dan XML dengan Mudah.
Apa itu Kanna?
Jika Anda pernah membuat aplikasi Swift yang perlu mengekstrak data dari halaman web, mengurai respons API dalam XML, atau mengikis konten terstruktur, Anda kemungkinan besar telah menghadapi tantangan bekerja dengan string HTML dan XML mentah. Pustaka standar Swift tidak menyertakan parser asli yang ergonomis untuk format ini, di sinilah Kanna hadir untuk menyelamatkan situasi. Pada intinya, Kanna menyediakan API Swift yang bersih untuk mengurai dan menelusuri dokumen HTML dan XML. Di balik layar, Kanna menyerahkan pekerjaan berat ke libxml2, yang berarti Anda mendapatkan kinerja parsing yang sangat stabil tanpa harus mengimplementasikan kembali aturan tata bahasa yang kompleks secara manual.
Kanna menonjol dalam ekosistem Swift karena kesederhanaan dan kekuatannya. Dengan API yang intuitif, Anda dapat menavigasi dan memanipulasi dokumen HTML/XML menggunakan metode kueri yang familiar seperti XPath 1.0 dan selector CSS3. Baik Anda sedang membangun scraper web, mengekstrak data dari feed RSS, atau memproses file konfigurasi XML, Kanna menyediakan alat yang Anda butuhkan. Dukungan lintas platform adalah salah satu kualitas paling menarik dari Kanna. Ia berjalan di macOS, iOS, tvOS, watchOS, dan bahkan Linux. XPath 1.0 dan selector CSS3 memberi Anda dua cara kuat dan standar industri untuk mengkueri dokumen. Dukungan ganda untuk selector CSS3 dan XPath 1.0 membuatnya fleksibel untuk menangani segala hal mulai dari ekstraksi HTML sederhana hingga pemrosesan XML yang kompleks dengan namespace. Baik Anda membangun aplikasi iOS yang mengonsumsi feed RSS, server Vapor yang meng-scrape harga pesaing, atau alat baris perintah yang mengubah data XML, Kanna memberi Anda alat untuk menyelesaikan pekerjaan dengan andal dan elegan.
Memulai dengan Kanna
Cara yang direkomendasikan dan paling mudah untuk menginstal Kanna adalah menggunakan CocoaPods. Silakan gunakan perintah berikut untuk instalasi yang lancar.
Instal Kanna melalui Carthage
// add the following line to your Podfile:
use_frameworks!
pod 'Kanna', '~> 5.2.2'
// Then run:
$ pod install
Instal Kanna melalui CocoaPods
// If you prefer Carthage, add this line to your Cartfile:
github "tid-kijyun/Kanna" ~> 5.2.2
Anda juga dapat menginstalnya secara manual; unduh file rilis terbaru langsung dari repositori GitHub.
Menganalisis Dokumen HTML dengan Swift
Pustaka open source Kanna telah menyertakan dukungan untuk memuat dan mengurai dokumen HTML di dalam aplikasi Swift. Kasus penggunaan paling umum untuk mengurai HTML ini, baik yang diunduh dari web maupun yang dibangun secara programatis. Berikut adalah contoh sederhana yang menunjukkan bagaimana pengembang perangkat lunak dapat menggunakan fungsi HTML yang menerima string HTML mentah, mengenkodenya, dan mengembalikan objek dokumen yang berisi properti seperti .title dan .body yang memberi mereka akses cepat ke elemen umum tanpa memerlukan selector.
Bagaimana Cara Mengurai HTML menggunakan Encoding UTF-8 melalui Perpustakaan Swift?
import Kanna
// A sample HTML string representing a webpage
let htmlString = """
My Tech Blog
Selamat datang di Swift Parsing
Kanna membuat penguraian HTML menjadi mudah dan elegan.
View on GitHub
"""
// Parse the HTML string using UTF-8 encoding
if let doc = try? HTML(html: htmlString, encoding: .utf8) {
// Access the document title directly via a convenience property
print(doc.title ?? "No title found")
// Output: My Tech Blog
// Access the full body text
print(doc.body?.text ?? "No body")
}
Dukungan Kuery Selektor CSS3
Pustaka Kanna telah menyertakan dukungan penuh untuk CSS3 Selector yang memungkinkan pengembang menggunakan sintaks CSS yang familiar untuk menemukan elemen. Dukungan selector CSS Kanna memungkinkan Anda menggunakan sintaks selector yang sama seperti yang mungkin Anda tulis dalam stylesheet atau querySelectorAll JavaScript. Ini membuatnya sangat intuitif bagi siapa pun yang berasal dari latar belakang pengembangan web. Contoh berikut menunjukkan bagaimana pengguna dapat memilih elemen HTML dan mengiterasi beberapa elemen di dalam aplikasi Swift.
Bagaimana Cara Memilih Beberapa Elemen HTML & Mengekstrak Teks Dari Elemen Tersebut melalui Perpustakaan Swift?
import Kanna
let htmlString = """
-
Buku Swift
$39.99
-
Panduan Xcode
$24.99
-
Dasar iOS
$49.99
"""
if let doc = try? HTML(html: htmlString, encoding: .utf8) {
// Select all elements with class "product" inside a "ul"
for product in doc.css("ul.product-list li.product") {
// Extract text from nested span elements using child selectors
let name = product.css("span.name").first?.text ?? "Unknown"
let price = product.css("span.price").first?.text ?? "N/A"
// Access HTML attributes using subscript notation
let productId = product["data-id"] ?? "No ID"
print("[\(productId)] \(name) — \(price)")
}
}
Dukungan Kuery XPath 1.0
Pustaka Kanna telah menyertakan dukungan untuk kueri XPath 1.0 di dalam aplikasi Swift. XPath menyediakan cara yang lebih kuat dan fleksibel untuk menavigasi elemen dan atribut dalam dokumen XML/HTML. Ini sangat berguna untuk struktur dokumen yang kompleks. Ekspresi XPath dapat menelusuri dokumen dengan cara yang tidak dapat dilakukan oleh selector CSS, seperti menemukan elemen berdasarkan posisi mereka, hubungan orangtua‑anak, atau pencocokan teks yang kompleks. Ini sangat penting untuk parsing XML dan pengambilan data HTML yang kompleks.
Menganalisis dan Memvalidasi XML dengan Swift
Selain parsing HTML dasar, pustaka sumber terbuka Kanna menawarkan kemampuan penanganan XML yang kuat. Ini mencakup validasi struktur XML yang tepat dan manajemen atribut. Saat bekerja dengan data terstruktur, Anda memerlukan lebih dari sekadar ekstraksi elemen. Kanna menyediakan akses penuh ke dokumen XML, termasuk komentar, instruksi pemrosesan, dan metadata dokumen.
Bagaimana Cara Melakukan Parsing XML di dalam Aplikasi Swift?
import Kanna
let xmlString = """
Swift Developer News
-
Kanna 6.0 Released with Swift 6 Support
Alex Johnson
Mon, 26 Jun 2024 00:00:00 GMT
-
New Features in Swift 5.10
Maria Garcia
Tue, 15 Apr 2024 00:00:00 GMT
"""
if let doc = try? Kanna.XML(xml: xmlString, encoding: .utf8) {
// Define a namespace mapping: prefix -> URI
// The prefix you use here ("dc") can be anything; it maps to the namespace URI
let namespaces = [
"dc": "http://purl.org/dc/elements/1.1/"
]
// Query elements in the "dc" namespace using the prefix
for item in doc.xpath("//item", namespaces: namespaces) {
let title = item.at_xpath("title")?.text ?? "No title"
let creator = item.at_xpath("dc:creator", namespaces: namespaces)?.text ?? "Unknown"
let pubDate = item.at_xpath("pubDate")?.text ?? "No date"
print("Title: \(title)")
print("Author: \(creator)")
print("Published: \(pubDate)\n")
}
}