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

Darmowa biblioteka Swift do parsowania i manipulacji danymi HTML

Otwarta biblioteka Swift do parsowania HTML/XML, która zapewnia czyste API Swift do łatwego parsowania i przeglądania dokumentów HTML i XML.

Czym jest Kanna?

Jeśli kiedykolwiek tworzyłeś aplikację Swift, która musi wyodrębniać dane ze stron internetowych, parsować odpowiedzi API w formacie XML lub zbierać ustrukturyzowaną treść, prawdopodobnie natknąłeś się na problem pracy z surowymi ciągami HTML i XML. Standardowa biblioteka Swift nie zawiera natywnego, ergonomicznego parsera dla tych formatów, co sprawia, że Kanna wkracza, aby uratować sytuację. W swojej istocie Kanna oferuje czyste API Swift do parsowania i przeglądania dokumentów HTML i XML. W tle deleguje ciężką pracę do libxml2, co oznacza, że otrzymujesz solidną wydajność parsowania bez konieczności ponownego implementowania skomplikowanych reguł gramatycznych.

Kanna wyróżnia się w ekosystemie Swift swoją prostotą i mocą. Dzięki intuicyjnemu API możesz nawigować i manipulować dokumentami HTML/XML, używając znanych metod zapytań, takich jak XPath 1.0 i selektory CSS3. Niezależnie od tego, czy tworzysz scraper internetowy, wyciągasz dane z kanałów RSS, czy przetwarzasz pliki konfiguracyjne XML, Kanna dostarcza niezbędne narzędzia. Obsługa wielu platform to jedna z najbardziej atrakcyjnych cech Kanny. Działa na macOS, iOS, tvOS, watchOS, a nawet na Linuxie. XPath 1.0 i selektory CSS3 dają dwie potężne, branżowe metody zapytań do dokumentów. Jej podwójne wsparcie zarówno dla selektorów CSS3, jak i XPath 1.0 sprawia, że jest na tyle elastyczna, aby obsłużyć wszystko, od prostego wyciągania HTML po złożone przetwarzanie XML z przestrzeniami nazw. Niezależnie od tego, czy budujesz aplikację iOS konsumującą kanał RSS, serwer Vapor, który skrapuje ceny konkurencji, czy narzędzie wiersza poleceń przekształcające dane XML, Kanna zapewnia narzędzia potrzebne do wykonania zadania niezawodnie i elegancko.

Previous Next

Rozpoczęcie pracy z Kanna

Zalecanym i najprostszym sposobem instalacji Kanna jest użycie CocoaPods. Proszę użyć następującego polecenia, aby przeprowadzić płynną instalację.

Zainstaluj Kanna przez Carthage

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

// Then run:
$ pod install

Zainstaluj Kanna przez CocoaPods


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

Możesz również zainstalować ją ręcznie; pobierz najnowsze pliki wydania bezpośrednio z repozytorium GitHub.

Parsowanie dokumentów HTML w Swift

Biblioteka open source Kanna zawiera wsparcie dla ładowania i parsowania dokumentów HTML w aplikacjach Swift. Najczęstszym przypadkiem użycia tego parsowania HTML jest zarówno pobieranie go z sieci, jak i tworzenie programowo. Oto prosty przykład, który pokazuje, jak programiści mogą używać funkcji HTML przyjmującej surowy ciąg HTML, kodować go i zwracać obiekt dokumentu zawierający właściwości takie jak .title i .body, które zapewniają szybki dostęp do typowych elementów bez konieczności używania selektora.

Jak parsować HTML używając kodowania UTF-8 za pomocą biblioteki Swift?

 import Kanna

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

  
    My Tech Blog
  
  
    

Witamy w Swift Parsing

Kanna sprawia, że parsowanie HTML jest proste i eleganckie.

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

Obsługa zapytań selektorów CSS3

Biblioteka Kanna zawiera pełne wsparcie dla selektorów CSS3, co umożliwia programistom używanie znanej składni CSS do znajdowania elementów. Obsługa selektorów CSS w Kanna pozwala używać tej samej składni selektora, którą można napisać w arkuszu stylów lub w metodzie querySelectorAll w JavaScript. Dzięki temu jest to bardzo intuicyjne dla osób pochodzących z środowiska web developmentu. Poniższy przykład pokazuje, jak użytkownicy mogą wybierać elementy HTML i iterować po wielu elementach w aplikacjach Swift.

Jak wybrać wiele elementów HTML i wyodrębnić z nich tekst za pomocą biblioteki Swift?

import Kanna

let htmlString = """


  
  • Książka Swift $39.99
  • Przewodnik Xcode $24.99
  • Podstawy 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)") } }

Obsługa zapytań XPath 1.0

Biblioteka Kanna zawiera wsparcie dla zapytań XPath 1.0 w aplikacjach Swift. XPath zapewnia bardziej potężny i elastyczny sposób na nawigację po elementach i atrybutach w dokumencie XML/HTML. Jest szczególnie przydatny w przypadku złożonych struktur dokumentów. Wyrażenia XPath mogą przeglądać dokumenty w sposób, którego nie umożliwiają selektory CSS, na przykład znajdując elementy na podstawie ich pozycji, relacji rodzic-dziecko lub skomplikowanego dopasowywania tekstu. Jest niezbędny do parsowania XML i zaawansowanego scrapowania HTML.

Parsowanie i walidacja XML w Swift

Poza podstawowym parsowaniem HTML, otwarto‑źródłowa biblioteka Kanna oferuje solidne możliwości obsługi XML. Obejmuje to prawidłową walidację struktury XML oraz zarządzanie atrybutami. Pracując z danymi strukturalnymi, potrzebujesz więcej niż tylko wyodrębnianie elementów. Kanna zapewnia pełny dostęp do dokumentu XML, w tym komentarze, instrukcje przetwarzania i metadane dokumentu.

Jak wykonać parsowanie XML w aplikacjach 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")
    }
}


 Polski