Biblioteca Swift Gratuita para Analizar y Manipular Datos HTML
Biblioteca Swift de Código Abierto para el Análisis de HTML/XML que Proporciona una API Swift Limpia para Analizar y Recorrer Documentos HTML y XML con Facilidad.
¿Qué es Kanna?
Si alguna vez has creado una aplicación Swift que necesita extraer datos de páginas web, analizar respuestas de API en XML o raspar contenido estructurado, probablemente te hayas encontrado con el desafío de trabajar con cadenas HTML y XML sin procesar. La biblioteca estándar de Swift no incluye un analizador nativo y ergonómico para estos formatos, y es aquí donde Kanna entra en acción para salvar el día. En su núcleo, Kanna ofrece una API Swift limpia para analizar y recorrer documentos HTML y XML. Internamente, delega el trabajo pesado a libxml2, lo que significa que obtienes un rendimiento de análisis sólido como una roca sin tener que re‑implementar reglas gramaticales complejas tú mismo.
Kanna destaca en el ecosistema Swift por su simplicidad y potencia. Con su API intuitiva, puedes navegar y manipular documentos HTML/XML usando métodos de consulta familiares como XPath 1.0 y selectores CSS3. Ya sea que estés creando un scraper web, extrayendo datos de fuentes RSS o procesando archivos de configuración XML, Kanna proporciona las herramientas que necesitas. El soporte multiplataforma es una de las cualidades más atractivas de Kanna. Funciona en macOS, iOS, tvOS, watchOS e incluso Linux. XPath 1.0 y los selectores CSS3 te ofrecen dos formas potentes y estándar de la industria para consultar documentos. Su soporte dual tanto para selectores CSS3 como para XPath 1.0 lo hace lo suficientemente flexible como para manejar desde extracciones HTML simples hasta procesamientos XML complejos y con espacios de nombres. Ya sea que estés construyendo una aplicación iOS que consuma una fuente RSS, un servidor Vapor que raspe precios de la competencia, o una herramienta de línea de comandos que transforme datos XML, Kanna te brinda las herramientas para realizar el trabajo de manera fiable y elegante.
Comenzando con Kanna
La forma recomendada y más fácil de instalar Kanna es usando CocoaPods. Por favor, use el siguiente comando para una instalación sin problemas.
Instalar Kanna vía Carthage
// add the following line to your Podfile:
use_frameworks!
pod 'Kanna', '~> 5.2.2'
// Then run:
$ pod install
Instalar Kanna vía CocoaPods
// If you prefer Carthage, add this line to your Cartfile:
github "tid-kijyun/Kanna" ~> 5.2.2
También puede instalarlo manualmente; descargue los archivos de la última versión directamente del repositorio GitHub.
Analizando documentos HTML con Swift
La biblioteca de código abierto Kanna incluye soporte para cargar y analizar documentos HTML dentro de aplicaciones Swift. El caso de uso más común para este análisis HTML, ya sea descargado de la web o construido programáticamente. Aquí hay un ejemplo sencillo que muestra cómo los desarrolladores de software pueden usar la función HTML que acepta una cadena HTML cruda, la codifica y devuelve un objeto documento que contiene propiedades como .title y .body que les dan acceso rápido a elementos comunes sin necesidad de un selector.
¿Cómo analizar HTML usando codificación UTF-8 mediante la biblioteca Swift?
import Kanna
// A sample HTML string representing a webpage
let htmlString = """
My Tech Blog
Bienvenido a Swift Parsing
Kanna hace que el análisis de HTML sea fácil y 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")
}
Compatibilidad con consultas de selectores CSS3
La biblioteca Kanna ha incluido soporte completo para selectores CSS3, lo que permite a los desarrolladores usar la sintaxis CSS familiar para encontrar elementos. El soporte de selectores CSS de Kanna le permite usar la misma sintaxis de selector que podría escribir en una hoja de estilos o en querySelectorAll de JavaScript. Esto lo hace muy intuitivo para cualquiera que provenga de un entorno de desarrollo web. El siguiente ejemplo muestra cómo los usuarios pueden seleccionar elementos HTML e iterar sobre múltiples elementos dentro de aplicaciones Swift.
¿Cómo seleccionar múltiples elementos HTML y extraer texto de ellos mediante la biblioteca Swift?
import Kanna
let htmlString = """
-
Libro Swift
$39.99
-
Guía Xcode
$24.99
-
Fundamentos de 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)")
}
}
Compatibilidad con consultas XPath 1.0
La biblioteca Kanna incluye soporte para consultas XPath 1.0 dentro de aplicaciones Swift. XPath ofrece una forma más potente y flexible de navegar a través de elementos y atributos en un documento XML/HTML. Es particularmente útil para estructuras de documentos complejas. Las expresiones XPath pueden recorrer documentos de maneras que los selectores CSS no pueden, como encontrar elementos basados en su posición, relaciones padre-hijo o coincidencias de texto complejas. Es indispensable para el análisis XML y la extracción compleja de HTML.
Análisis y validación de XML con Swift
Más allá del análisis básico de HTML, la biblioteca de código abierto Kanna ofrece robustas capacidades de manejo de XML. Esto incluye la validación adecuada de la estructura XML y la gestión de atributos. Cuando se trabaja con datos estructurados, se necesita más que solo la extracción de elementos. Kanna proporciona acceso completo al documento XML, incluidos los comentarios, las instrucciones de procesamiento y los metadatos del documento.
¿Cómo realizar el análisis XML dentro de aplicaciones 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")
}
}