HTML डेटा को पार्स और संशोधित करने के लिए मुफ्त Swift लाइब्रेरी
ओपन सोर्स HTML/XML पार्सिंग Swift लाइब्रेरी जो HTML और XML दस्तावेज़ों को आसानी से पार्स और ट्रैवर्स करने के लिए एक साफ़ Swift API प्रदान करती है।
कन्ना क्या है?
यदि आपने कभी ऐसा Swift एप्लिकेशन बनाया है जिसे वेब पेजों से डेटा निकालना, XML में API प्रतिक्रियाओं को पार्स करना, या संरचित सामग्री को स्क्रैप करना आवश्यक है, तो आप संभवतः कच्चे HTML और XML स्ट्रिंग्स के साथ काम करने की चुनौती का सामना कर चुके होंगे। Swift की स्टैंडर्ड लाइब्रेरी में इन फ़ॉर्मैट्स के लिए कोई मूल, सहज पार्सर शामिल नहीं है, और यही वह जगह है जहाँ Kanna मदद के लिए आता है। मूल रूप से, Kanna HTML और XML दस्तावेज़ों को पार्स और ट्रैवर्स करने के लिए एक साफ़ Swift API प्रदान करता है। आंतरिक रूप से, यह भारी काम libxml2 को सौंपता है, जिसका अर्थ है कि आप बिना जटिल व्याकरण नियमों को स्वयं लागू किए, मजबूत पार्सिंग प्रदर्शन प्राप्त करते हैं।
Kanna अपनी सरलता और शक्ति के कारण Swift इकोसिस्टम में अलग पहचान बनाता है। इसके सहज API के साथ, आप HTML/XML दस्तावेज़ों को परिचित क्वेरी विधियों जैसे XPath 1.0 और CSS3 सेलेक्टर्स का उपयोग करके नेविगेट और संशोधित कर सकते हैं। चाहे आप वेब स्क्रैपर बना रहे हों, RSS फ़ीड से डेटा निकाल रहे हों, या XML कॉन्फ़िगरेशन फ़ाइलों को प्रोसेस कर रहे हों, Kanna वह उपकरण प्रदान करता है जिसकी आपको आवश्यकता है। क्रॉस‑प्लेटफ़ॉर्म समर्थन Kanna की सबसे आकर्षक विशेषताओं में से एक है। यह macOS, iOS, tvOS, watchOS, और यहाँ तक कि Linux पर भी चलता है। XPath 1.0 और CSS3 सेलेक्टर्स आपको दस्तावेज़ों को क्वेरी करने के दो शक्तिशाली, उद्योग‑मानक तरीके देते हैं। CSS3 सेलेक्टर्स और XPath 1.0 दोनों के द्वैध समर्थन के कारण यह सरल HTML निष्कर्षण से लेकर जटिल, नेमस्पेस वाले XML प्रोसेसिंग तक सब कुछ संभालने के लिए पर्याप्त लचीला है। चाहे आप एक iOS ऐप बना रहे हों जो RSS फ़ीड को उपभोग करता है, एक Vapor सर्वर जो प्रतिस्पर्धी मूल्य स्क्रैप करता है, या एक कमांड‑लाइन टूल जो XML डेटा को परिवर्तित करता है, Kanna आपको विश्वसनीय और सुंदर तरीके से कार्य पूरा करने के उपकरण देता है।
कन्ना के साथ शुरूआत
Kanna को स्थापित करने का अनुशंसित और सबसे आसान तरीका CocoaPods का उपयोग करना है। कृपया सुगम स्थापना के लिए निम्नलिखित कमांड का उपयोग करें।
Carthage के माध्यम से Kanna स्थापित करें
// add the following line to your Podfile:
use_frameworks!
pod 'Kanna', '~> 5.2.2'
// Then run:
$ pod install
CocoaPods के माध्यम से Kanna स्थापित करें
// If you prefer Carthage, add this line to your Cartfile:
github "tid-kijyun/Kanna" ~> 5.2.2
आप इसे मैन्युअल रूप से भी स्थापित कर सकते हैं; नवीनतम रिलीज़ फ़ाइलें सीधे GitHub रिपॉज़िटरी से डाउनलोड करें।
स्विफ्ट के माध्यम से HTML दस्तावेज़ पार्स करना
ओपन सोर्स Kanna लाइब्रेरी ने Swift एप्लिकेशनों के भीतर HTML दस्तावेज़ों को लोड और पार्स करने के लिए समर्थन शामिल किया है। HTML को पार्स करने का सबसे सामान्य उपयोग मामला, चाहे वह वेब से डाउनलोड किया गया हो या प्रोग्रामेटिक रूप से निर्मित। यहाँ एक सरल उदाहरण है जो दिखाता है कि सॉफ़्टवेयर डेवलपर्स कैसे HTML फ़ंक्शन का उपयोग कर सकते हैं जो एक कच्ची HTML स्ट्रिंग को स्वीकार करता है, उसे एन्कोड करता है और एक दस्तावेज़ ऑब्जेक्ट लौटाता है जिसमें .title और .body जैसी प्रॉपर्टीज़ होती हैं, जो उन्हें चयनकर्ता की आवश्यकता के बिना सामान्य तत्वों तक तेज़ पहुँच प्रदान करती हैं।
Swift लाइब्रेरी के माध्यम से UTF-8 एन्कोडिंग का उपयोग करके HTML को कैसे पार्स करें?
import Kanna
// A sample HTML string representing a webpage
let htmlString = """
My Tech Blog
स्विफ्ट पार्सिंग में आपका स्वागत है
Kanna 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")
}
CSS3 चयनकर्ता क्वेरी समर्थन
Kanna लाइब्रेरी ने CSS3 सिलेक्टर के लिए पूर्ण समर्थन शामिल किया है, जिससे डेवलपर्स परिचित CSS सिंटैक्स का उपयोग करके तत्वों को खोज सकते हैं। Kanna का CSS सिलेक्टर समर्थन आपको वही सिलेक्टर सिंटैक्स उपयोग करने की अनुमति देता है जो आप स्टाइलशीट या जावास्क्रिप्ट के querySelectorAll में लिख सकते हैं। यह वेब विकास पृष्ठभूमि वाले किसी भी व्यक्ति के लिए बहुत सहज बनाता है। निम्नलिखित उदाहरण दिखाता है कि उपयोगकर्ता Swift एप्लिकेशन में HTML तत्वों को कैसे चुन सकते हैं और कई तत्वों पर कैसे इटररेट कर सकते हैं।
Swift लाइब्रेरी के माध्यम से कई HTML तत्वों का चयन कैसे करें और उनसे टेक्स्ट निकालें?
import Kanna
let htmlString = """
-
स्विफ्ट बुक
$39.99
-
एक्सकोड गाइड
$24.99
-
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)")
}
}
XPath 1.0 क्वेरी समर्थन
Kanna लाइब्रेरी ने Swift ऐप्स के भीतर XPath 1.0 क्वेरींग के लिए समर्थन शामिल किया है। XPath XML/HTML दस्तावेज़ में तत्वों और गुणों के माध्यम से नेविगेट करने का अधिक शक्तिशाली और लचीला तरीका प्रदान करता है। यह विशेष रूप से जटिल दस्तावेज़ संरचनाओं के लिए उपयोगी है। XPath अभिव्यक्तियाँ दस्तावेज़ों को ऐसे तरीकों से पार कर सकती हैं जो CSS सिलेक्टर्स नहीं कर सकते, जैसे तत्वों को उनकी स्थिति, पैरेंट-चाइल्ड संबंध, या जटिल टेक्स्ट मिलान के आधार पर खोजना। यह XML पार्सिंग और जटिल HTML स्क्रैपिंग के लिए अनिवार्य है।
स्विफ्ट के माध्यम से XML पार्सिंग और मान्यकरण
बेसिक HTML पार्सिंग से आगे, ओपन सोर्स Kanna लाइब्रेरी मजबूत XML हैंडलिंग क्षमताएँ प्रदान करती है। इसमें उचित XML संरचना मान्यकरण और एट्रिब्यूट प्रबंधन शामिल है। संरचित डेटा के साथ काम करते समय, केवल तत्व निष्कर्षण से अधिक की आवश्यकता होती है। Kanna पूर्ण XML दस्तावेज़ तक पहुँच प्रदान करती है, जिसमें टिप्पणियाँ, प्रोसेसिंग इंस्ट्रक्शन, और दस्तावेज़ मेटाडेटा शामिल हैं।
Swift ऐप्स में XML पार्सिंग कैसे करें?
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")
}
}