1. produkty
  2.   HTML
  3.   Swift
  4.   Kanna
 
  

Bezplatná Swift knihovna pro parsování a manipulaci s HTML daty

Open source Swift knihovna pro parsování HTML/XML, která poskytuje čisté Swift API pro snadné parsování a procházení HTML a XML dokumentů.

Co je Kanna?

Pokud jste někdy vytvářeli Swift aplikaci, která potřebuje získávat data z webových stránek, parsovat odpovědi API v XML nebo získávat strukturovaný obsah, pravděpodobně jste narazili na problém práce s čistými řetězci HTML a XML. Standardní knihovna Swift neobsahuje nativní, ergonomický parser pro tyto formáty, a právě zde Kanna přichází na pomoc. V jádru Kanna poskytuje čisté Swift API pro parsování a procházení HTML a XML dokumentů. Pod kapotou deleguje těžkou práci na libxml2, což znamená, že získáte pevný výkon parsování bez nutnosti znovu implementovat složité gramatické pravidla sami.

Kanna vyniká v ekosystému Swift svou jednoduchostí a výkonností. Díky intuitivnímu API můžete procházet a manipulovat s HTML/XML dokumenty pomocí známých metod dotazování, jako jsou XPath 1.0 a CSS3 selektory. Ať už vytváříte webový scraper, extrahujete data z RSS kanálů nebo zpracováváte XML konfigurační soubory, Kanna poskytuje potřebné nástroje. Podpora napříč platformami je jednou z nejatraktivnějších vlastností Kanna. Běží na macOS, iOS, tvOS, watchOS a dokonce i na Linuxu. XPath 1.0 a CSS3 selektory vám nabízejí dva výkonné, průmyslově standardní způsoby dotazování dokumentů. Její dvojí podpora jak CSS3 selektorů, tak XPath 1.0 ji činí dostatečně flexibilní pro vše od jednoduchého extrahování HTML až po složité zpracování XML s jmennými prostory. Ať už vytváříte iOS aplikaci, která konzumuje RSS kanál, server Vapor, který scrapuje ceny konkurence, nebo nástroj příkazové řádky, který transformuje XML data, Kanna vám poskytne nástroje k spolehlivému a elegantnímu dokončení úkolu.

Previous Next

Začínáme s Kanna

Doporučený a nejjednodušší způsob instalace Kanna je pomocí CocoaPods. Použijte prosím následující příkaz pro plynulou instalaci.

Instalujte Kanna pomocí Carthage

// add the following line to your Podfile:
use_frameworks! 
pod 'Kanna', '~> 5.2.2'

// Then run:
$ pod install

Instalujte Kanna pomocí CocoaPods


// If you prefer Carthage, add this line to your Cartfile:
github "tid-kijyun/Kanna" ~> 5.2.2

Můžete ji také nainstalovat ručně; stáhněte nejnovější soubory vydání přímo z GitHub repozitáře.

Parsování HTML dokumentů pomocí Swiftu

Otevřená knihovna Kanna obsahuje podporu načítání a parsování HTML dokumentů ve Swift aplikacích. Nejčastějším použitím je parsování HTML, ať už je staženo z webu nebo vytvořeno programově. Zde je jednoduchý příklad, který ukazuje, jak vývojáři mohou použít funkci HTML, která přijímá surový HTML řetězec, zpracuje jej a vrátí objekt dokumentu obsahující vlastnosti jako .title a .body, což jim poskytuje rychlý přístup k běžným elementům bez potřeby selektoru.

Jak parsovat HTML s kódováním UTF-8 pomocí Swift knihovny?

 import Kanna

// A sample HTML string representing a webpage
let htmlString = """

  
    My Tech Blog
  
  
    

Vítejte ve Swift Parsing

Kanna usnadňuje a elegantně provádí parsování HTML.

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") }

Podpora dotazování pomocí CSS3 selektorů

Knihovna Kanna zahrnuje plnou podporu pro CSS3 selektory, což umožňuje vývojářům používat známou syntaxi CSS k vyhledávání prvků. Podpora CSS selektorů v Kanna vám umožňuje používat stejnou syntaxi selektorů, kterou byste mohli psát v stylesheetu nebo v JavaScriptu pomocí querySelectorAll. To je velmi intuitivní pro každého, kdo pochází z webového vývoje. Následující příklad ukazuje, jak mohou uživatelé vybírat HTML prvky a iterovat přes více prvků v aplikacích Swift.

Jak vybrat více HTML elementů a extrahovat z nich text pomocí Swift knihovny?

import Kanna

let htmlString = """


  
  • Kniha Swift $39.99
  • Průvodce Xcode $24.99
  • Základy 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)") } }

Podpora dotazování pomocí XPath 1.0

Knihovna Kanna zahrnuje podporu pro dotazování pomocí XPath 1.0 v aplikacích Swift. XPath poskytuje výkonnější a flexibilnější způsob, jak procházet prvky a atributy v dokumentu XML/HTML. Je zvláště užitečný pro složité struktury dokumentů. Výrazy XPath mohou procházet dokumenty způsoby, které CSS selektory nedokážou, například najít prvky na základě jejich pozice, vztahů rodič-dítě nebo složitého shody textu. Je nepostradatelný pro parsování XML a složité scrapování HTML.

Parsování a validace XML pomocí Swiftu

Mimo základní parsování HTML nabízí open source knihovna Kanna robustní možnosti zpracování XML. To zahrnuje správnou validaci struktury XML a správu atributů. Při práci se strukturovanými daty potřebujete více než jen extrakci elementů. Kanna poskytuje úplný přístup k XML dokumentu, včetně komentářů, instrukcí zpracování a metadat dokumentu.

Jak provést XML parsování v aplikacích 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")
    }
}


 Čeština