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

Bezmaksas Swift bibliotēka HTML datu parsēšanai un manipulēšanai

Atvērtā koda HTML/XML parsēšanas Swift bibliotēka, kas nodrošina tīru Swift API, lai viegli parsētu un pārlūkotu HTML un XML dokumentus.

Kas ir Kanna?

Ja jūs jebkad esat izveidojis Swift lietotni, kurai jāizgūst dati no tīmekļa lapām, jāparsē API atbildes XML formātā vai jāizvelk strukturēts saturs, jums, visticamāk, ir bijusi saskarsme ar izaicinājumu strādāt ar neapstrādātiem HTML un XML virknēm. Swift standarta bibliotēka nesatur iebūvētu, ergonomisku parsētāju šiem formātiem, un šeit nāk palīgā Kanna. Savā būtībā Kanna nodrošina tīru Swift API HTML un XML dokumentu parsēšanai un pārlūkošanai. Aizmugurē tas pārsūta smago darbu uz libxml2, kas nozīmē, ka jūs iegūstat stabilu parsēšanas veiktspēju, nepārrakstot sarežģītas gramatikas likumus pašiem.

Kanna izceļas Swift ekosistēmā ar savu vienkāršību un jaudu. Ar intuitīvo API jūs varat pārvietoties un manipulēt ar HTML/XML dokumentiem, izmantojot pazīstamas vaicāšanas metodes, piemēram, XPath 1.0 un CSS3 selektorus. Neatkarīgi no tā, vai veidojat tīmekļa skrāpiru, izguļat datus no RSS plūsmām vai apstrādājat XML konfigurācijas failus, Kanna nodrošina nepieciešamos rīkus. Daudzplatformu atbalsts ir viena no Kanna pievilcīgākajām īpašībām. Tā darbojas uz macOS, iOS, tvOS, watchOS un pat Linux. XPath 1.0 un CSS3 selektori piedāvā divas spēcīgas, nozarē standartizētas veidus, kā vaicāt dokumentus. Tā dubultais atbalsts gan CSS3 selektoriem, gan XPath 1.0 padara to pietiekami elastīgu, lai tiktu galā gan ar vienkāršu HTML izguvi, gan ar sarežģītu, nosaukumvietu (namespaced) XML apstrādi. Neatkarīgi no tā, vai veidojat iOS lietotni, kas patērē RSS plūsmu, Vapor serveri, kas skrāpē konkurentu cenu datus, vai komandrindas rīku, kas pārveido XML datus, Kanna sniedz rīkus, lai uzdevums tiktu izpildīts uzticami un eleganti.

Previous Next

Sākšana ar Kanna

Ieteicamais un vienkāršākais veids, kā instalēt Kanna, ir izmantot CocoaPods. Lūdzu, izmantojiet šādu komandu, lai veiktu gludu instalāciju.

Instalējiet Kanna, izmantojot Carthage

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

// Then run:
$ pod install

Instalējiet Kanna, izmantojot CocoaPods


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

Jūs to varat arī instalēt manuāli; lejupielādējiet jaunākos izlaiduma failus tieši no GitHub krātuves.

HTML dokumentu parsēšana, izmantojot Swift

Atvērtā koda Kanna bibliotēka ir iekļāvusi atbalstu HTML dokumentu ielādēšanai un parsēšanai Swift lietotnēs. Visbiežāk izmantotais scenārijs ir HTML parsēšana, neatkarīgi no tā, vai tas tiek lejupielādēts no tīmekļa vai izveidots programmatiski. Šeit ir vienkāršs piemērs, kas parāda, kā programmatūras izstrādātāji var izmantot HTML funkciju, kas pieņem neapstrādātu HTML virkni, to kodē un atgriež dokumenta objektu ar īpašībām, piemēram, .title un .body, kas nodrošina ātru piekļuvi biežāk izmantotiem elementiem, nepieciešama selektora lietošana.

Kā parsēt HTML, izmantojot UTF-8 kodējumu, caur Swift bibliotēku?

 import Kanna

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

  
    My Tech Blog
  
  
    

Laipni lūdzam Swift Parsing

Kanna padara HTML parsēšanu vienkāršu un elegantu.

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

CSS3 selektoru vaicājumu atbalsts

Kanna bibliotēka ir iekļāvusi pilnīgu atbalstu CSS3 selektoriem, ļaujot izstrādātājiem izmantot pazīstamu CSS sintaksi elementu atrašanai. Kanna CSS selektora atbalsts ļauj izmantot to pašu selektora sintaksi, ko varētu rakstīt stila lapā vai JavaScript querySelectorAll metodē. Tas padara to ļoti intuitīvu ikvienam, kas nāk no tīmekļa izstrādes fona. Zemāk esošais piemērs parāda, kā lietotāji var izvēlēties HTML elementus un iterēt pār vairākiem elementiem Swift lietojumprogrammās.

Kā izvēlēties vairākus HTML elementus un izvilkt no tiem tekstu, izmantojot Swift bibliotēku?

import Kanna

let htmlString = """


  
  • Swift grāmata $39.99
  • Xcode ceļvedis $24.99
  • iOS pamati $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)") } }

XPath 1.0 vaicājumu atbalsts

Kanna bibliotēka ir iekļāvusi atbalstu XPath 1.0 vaicājumiem Swift lietotnēs. XPath nodrošina jaudīgāku un elastīgāku veidu, kā pārvietoties pa elementiem un atribūtiem XML/HTML dokumentā. Tas ir īpaši noderīgs sarežģītām dokumentu struktūrām. XPath izteiksmes var pārlūkot dokumentus tādā veidā, kā CSS selektori to nevar, piemēram, atrast elementus, pamatojoties uz to pozīciju, vecāku-bērna attiecībām vai sarežģītu teksta atbilstību. Tas ir neatņemama sastāvdaļa XML parsēšanai un sarež�ģītai HTML skrāpēšanai.

XML parsēšana un validācija, izmantojot Swift

Papildus pamata HTML parsēšanai atvērtā koda Kanna bibliotēka piedāvā spēcīgas XML apstrādes iespējas. Tas ietver pareizu XML struktūras validāciju un atribūtu pārvaldību. Strādājot ar strukturētiem datiem, nepieciešams vairāk nekā tikai elementu izgūšana. Kanna nodrošina pilnīgu XML dokumenta piekļuvi, ieskaitot komentārus, apstrādes instrukcijas un dokumenta metadatus.

Kā veikt XML parsēšanu Swift lietotnēs?

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


 Latviski