Libreria Swift Gratuita per Analizzare e Manipolare Dati HTML
Libreria Swift Open Source per il Parsing di HTML/XML che fornisce un'API Swift pulita per analizzare e attraversare documenti HTML e XML con facilità.
Che cos'è Kanna?
Se hai mai creato un'applicazione Swift che deve estrarre dati da pagine web, analizzare risposte API in XML o estrarre contenuti strutturati, probabilmente ti sei imbattuto nella sfida di lavorare con stringhe HTML e XML grezze. La libreria standard di Swift non include un parser nativo ed ergonomico per questi formati, ed è qui che Kanna entra in gioco per salvare la situazione. Nel suo nucleo, Kanna fornisce una pulita API Swift per il parsing e l'attraversamento di documenti HTML e XML. Dietro le quinte, delega il lavoro pesante a libxml2, il che significa che ottieni prestazioni di parsing solide come una roccia senza dover reimplementare complesse regole grammaticali da solo.
Kanna si distingue nell'ecosistema Swift per la sua semplicità e potenza. Con la sua API intuitiva, puoi navigare e manipolare documenti HTML/XML usando metodi di interrogazione familiari come XPath 1.0 e i selettori CSS3. Che tu stia costruendo uno scraper web, estraendo dati da feed RSS o elaborando file di configurazione XML, Kanna fornisce gli strumenti di cui hai bisogno. Il supporto multipiattaforma è una delle qualità più attraenti di Kanna. Funziona su macOS, iOS, tvOS, watchOS e persino Linux. XPath 1.0 e i selettori CSS3 ti offrono due potenti metodi standard del settore per interrogare i documenti. Il suo supporto duale sia per i selettori CSS3 sia per XPath 1.0 lo rende sufficientemente flessibile da gestire tutto, dall'estrazione semplice di HTML a complesse elaborazioni XML con namespace. Che tu stia creando un'app iOS che consuma un feed RSS, un server Vapor che estrae i prezzi dei concorrenti o uno strumento da riga di comando che trasforma dati XML, Kanna ti fornisce gli strumenti per completare il lavoro in modo affidabile ed elegante.
Iniziare con Kanna
Il modo consigliato e più semplice per installare Kanna è utilizzare CocoaPods. Si prega di usare il seguente comando per un'installazione fluida.
Installa Kanna tramite Carthage
// add the following line to your Podfile:
use_frameworks!
pod 'Kanna', '~> 5.2.2'
// Then run:
$ pod install
Installa Kanna tramite CocoaPods
// If you prefer Carthage, add this line to your Cartfile:
github "tid-kijyun/Kanna" ~> 5.2.2
Puoi anche installarlo manualmente; scarica i file dell'ultima versione direttamente dal repository GitHub.
Analisi dei documenti HTML con Swift
La libreria open source Kanna include il supporto per caricare e analizzare documenti HTML all'interno di applicazioni Swift. Il caso d'uso più comune per questa analisi HTML, sia scaricata dal web sia costruita programmaticamente. Ecco un semplice esempio che mostra come gli sviluppatori software possono utilizzare la funzione HTML che accetta una stringa HTML grezza, la codifica e restituisce un oggetto documento contenente proprietà come .title e .body che forniscono un rapido accesso agli elementi comuni senza necessità di un selettore.
Come analizzare HTML usando la codifica UTF-8 tramite la libreria Swift?
import Kanna
// A sample HTML string representing a webpage
let htmlString = """
My Tech Blog
Benvenuto a Swift Parsing
Kanna rende l'analisi HTML facile ed elegante.
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")
}
Supporto per le query dei selettori CSS3
La libreria Kanna ha incluso il supporto completo per i selettori CSS3, consentendo agli sviluppatori di utilizzare la sintassi CSS familiare per trovare gli elementi. Il supporto ai selettori CSS di Kanna permette di usare la stessa sintassi di selettore che potresti scrivere in un foglio di stile o in querySelectorAll di JavaScript. Questo lo rende molto intuitivo per chi proviene da un background di sviluppo web. L'esempio seguente mostra come gli utenti possono selezionare elementi HTML e iterare su più elementi all'interno delle applicazioni Swift.
Come selezionare più elementi HTML e estrarre il testo da essi tramite la libreria Swift?
import Kanna
let htmlString = """
-
Libro Swift
$39.99
-
Guida Xcode
$24.99
-
Fondamentali 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)")
}
}
Supporto per le query XPath 1.0
La libreria Kanna include il supporto per le query XPath 1.0 nelle app Swift. XPath offre un modo più potente e flessibile per navigare tra gli elementi e gli attributi in un documento XML/HTML. È particolarmente utile per strutture di documenti complesse. Le espressioni XPath possono attraversare i documenti in modi che i selettori CSS non possono, come trovare elementi in base alla loro posizione, alle relazioni genitore-figlio o a corrispondenze di testo complesse. È indispensabile per il parsing XML e lo scraping HTML complesso.
Analisi e validazione XML con Swift
Oltre al parsing di base dell'HTML, la libreria open source Kanna offre robuste capacità di gestione XML. Questo include la corretta validazione della struttura XML e la gestione degli attributi. Quando si lavora con dati strutturati, è necessario più di una semplice estrazione degli elementi. Kanna fornisce l'accesso completo al documento XML, inclusi commenti, istruzioni di elaborazione e metadati del documento.
Come eseguire il parsing XML all'interno delle app 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")
}
}