HTML Verilerini Ayrıştırmak ve Manipüle Etmek için Ücretsiz Swift Kütüphanesi
HTML/XML Ayrıştırma için Açık Kaynak Swift Kütüphanesi, HTML ve XML Belgelerini Kolaylıkla Ayrıştırmak ve Dolaşmak için Temiz bir Swift API'si sunar.
Kanna Nedir?
Eğer web sayfalarından veri çıkarmak, XML'de API yanıtlarını ayrıştırmak veya yapılandırılmış içeriği kazımak zorunda olan bir Swift uygulaması geliştirdiyseniz, ham HTML ve XML dizeleriyle çalışmanın zorluğuyla karşılaşmış olabilirsiniz. Swift'in standart kütüphanesi bu formatlar için yerel, ergonomik bir ayrıştırıcı içermez; işte Kanna burada devreye girerek sorunu çözer. Temel olarak, Kanna HTML ve XML belgelerini ayrıştırmak ve dolaşmak için temiz bir Swift API'si sunar. Arkasında, ağır işi libxml2'ye devreder, bu da karmaşık dilbilgisi kurallarını kendiniz yeniden uygulamadan sağlam bir ayrıştırma performansı elde etmenizi sağlar.
Kanna, Swift ekosisteminde sadeliği ve gücüyle öne çıkar. Sezgisel API'si sayesinde, XPath 1.0 ve CSS3 seçicileri gibi tanıdık sorgulama yöntemlerini kullanarak HTML/XML belgelerini gezebilir ve manipüle edebilirsiniz. Web kazıyıcı oluşturuyor, RSS beslemelerinden veri çıkarıyor ya da XML yapılandırma dosyalarını işliyor olun, Kanna ihtiyacınız olan araçları sunar. Çapraz platform desteği, Kanna'nın en çekici özelliklerinden biridir. macOS, iOS, tvOS, watchOS ve hatta Linux üzerinde çalışır. XPath 1.0 ve CSS3 seçicileri, belgelere sorgu yapmanın iki güçlü, endüstri standardı yolunu sunar. Hem CSS3 seçicileri hem de XPath 1.0 desteği, basit HTML çıkarımından karmaşık, ad alanlı XML işleme kadar her şeyi esnek bir şekilde ele alabilecek kadar çok yönlüdür. RSS beslemesi tüketen bir iOS uygulaması, rakip fiyatlarını kazıyan bir Vapor sunucusu ya da XML verilerini dönüştüren bir komut satırı aracı geliştiriyor olun, Kanna işi güvenilir ve zarif bir şekilde tamamlamanız için gerekli araçları sağlar.
Kanna'ya Başlarken
Kanna'yı kurmanın önerilen ve en kolay yolu CocoaPods kullanmaktır. Sorunsuz bir kurulum için lütfen aşağıdaki komutu kullanın.
Kanna'yı Carthage ile Kurun
// add the following line to your Podfile:
use_frameworks!
pod 'Kanna', '~> 5.2.2'
// Then run:
$ pod install
Kanna'yı CocoaPods ile Kurun
// If you prefer Carthage, add this line to your Cartfile:
github "tid-kijyun/Kanna" ~> 5.2.2
Ayrıca manuel olarak da kurabilirsiniz; en son sürüm dosyalarını doğrudan GitHub deposundan indirin.
Swift ile HTML Belgelerini Ayrıştırma
Açık kaynak Kanna kütüphanesi, Swift uygulamaları içinde HTML belgelerini yükleme ve ayrıştırma desteği içermektedir. HTML ayrıştırmanın en yaygın kullanım senaryosu, ister web'den indirilmiş ister programatik olarak oluşturulmuş olsun. İşte, yazılım geliştiricilerin ham bir HTML dizesi kabul eden, onu kodlayan ve .title ve .body gibi özelliklere sahip bir belge nesnesi döndüren HTML işlevini nasıl kullanabileceklerini gösteren basit bir örnek.
Swift Kütüphanesi ile UTF-8 Kodlamasını Kullanarak HTML Nasıl Ayrıştırılır?
import Kanna
// A sample HTML string representing a webpage
let htmlString = """
My Tech Blog
Swift Parsing'e Hoş Geldiniz
Kanna, HTML ayrıştırmayı kolay ve şık hale getirir.
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 Seçici Sorgulama Desteği
Kanna kütüphanesi, geliştiricilerin öğeleri bulmak için tanıdık CSS sözdizimini kullanmalarını sağlayan tam CSS3 seçici desteği eklemiştir. Kanna'nın CSS seçici desteği, bir stil sayfasında veya JavaScript'in querySelectorAll yönteminde yazabileceğiniz aynı seçici sözdizimini kullanmanıza olanak tanır. Bu, web geliştirme geçmişi olan herkes için çok sezgisel bir deneyim sunar. Aşağıdaki örnek, kullanıcıların HTML öğelerini nasıl seçebileceğini ve Swift uygulamaları içinde birden fazla öğe üzerinde nasıl yineleme yapabileceğini gösterir.
Swift Kütüphanesi ile Birden Çok HTML Öğesini Seçip Metnini Çıkarın?
import Kanna
let htmlString = """
-
Swift Kitabı
$39.99
-
Xcode Rehberi
$24.99
-
iOS Temelleri
$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 Sorgulama Desteği
Kanna kütüphanesi, Swift uygulamaları içinde XPath 1.0 sorgulama desteği eklemiştir. XPath, bir XML/HTML belgesindeki öğeler ve öznitelikler arasında gezinmek için daha güçlü ve esnek bir yol sunar. Özellikle karmaşık belge yapıları için faydalıdır. XPath ifadeleri, öğeleri konumlarına, ebeveyn-çocuk ilişkilerine veya karmaşık metin eşleşmelerine göre bulmak gibi CSS seçicilerinin yapamadığı şekillerde belgeleri dolaşabilir. XML ayrıştırma ve karmaşık HTML kazıma işlemleri için vazgeçilmezdir.
Swift ile XML Ayrıştırma ve Doğrulama
Temel HTML ayrıştırmanın ötesinde, açık kaynak Kanna kütüphanesi güçlü XML işleme yetenekleri sunar. Bu, doğru XML yapı doğrulaması ve öznitelik yönetimini içerir. Yapılandırılmış veriyle çalışırken yalnızca öğe çıkarımından daha fazlasına ihtiyacınız vardır. Kanna, yorumlar, işleme talimatları ve belge meta verileri dahil olmak üzere tam XML belge erişimi sağlar.
Swift Uygulamalarında XML Ayrıştırması Nasıl Yapılır?
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")
}
}