SwiftSoup के साथ Swift में HTML पार्सिंग (iOS/macOS)
iOS और macOS के लिए एप्लिकेशन विकसित करते समय, अक्सर HTML पेजों से डेटा निकालने की आवश्यकता होती है। चाहे वह समाचार साइट को पार्स करना हो, मुद्रा दरें प्राप्त करना हो, या वेब सामग्री का विश्लेषण करना हो — एक विश्वसनीय उपकरण के बिना काम नहीं चल सकता। Swift की दुनिया में, SwiftSoup लाइब्रेरी वास्तविक मानक है — यह लोकप्रिय Java पार्सर Jsoup का एक शुद्ध Swift पोर्ट है।
SwiftSoup HTML दस्तावेज़ों को लोड करने, पार्स करने और हेरफेर करने के लिए एक सुविधाजनक API प्रदान करता है, जिसमें CSS-सेलेक्टर और DOM ट्रैवर्सल विधियों का उपयोग किया जाता है। यह लाइब्रेरी पूरी तरह से Swift में लिखी गई है, इसकी कोई बाहरी निर्भरता नहीं है, और यह सभी Apple प्लेटफ़ॉर्म: iOS (11.0 से शुरू), macOS (10.13+), watchOS और tvOS को सपोर्ट करती है।
Swift Package Manager के माध्यम से SwiftSoup इंस्टॉलेशन
अपने प्रोजेक्ट के Package.swift में या Xcode मेनू के माध्यम से निर्भरता जोड़ें: File → Add Packages...
// Package.swiftdependencies: [ .package(url: "https://github.com/scinfu/SwiftSoup.git", from: "2.6.0")],targets: [ .target( name: "YourTarget", dependencies: ["SwiftSoup"])]
// या Xcode में: https://github.com/scinfu/SwiftSoup.git, संस्करण 2.6.0इंस्टॉलेशन के बाद, आवश्यक फ़ाइल में लाइब्रेरी को इम्पोर्ट करें:
import SwiftSoupHTML स्ट्रिंग का बुनियादी पार्सिंग
शुरू करने का सबसे आसान तरीका HTML स्ट्रिंग को पार्स करना है, जो उदाहरण के लिए, URLSession से प्राप्त की गई हो:
let html = """<html> <body> <h1>नमस्ते, दुनिया!</h1> <p class="content">यह पैराग्राफ के अंदर का टेक्स्ट है</p> <a href="https://example.com">लिंक</a> </body></html>"""
do { let doc: Document = try SwiftSoup.parse(html) let title = try doc.title() let paragraph = try doc.select("p.content").first()?.text() let link = try doc.select("a").first()?.attr("href") print("शीर्षक: \\(title)") print("पैराग्राफ: \\(paragraph ?? "नहीं मिला")") print("लिंक: \\(link ?? "नहीं मिला")")} catch { print("पार्सिंग त्रुटि: \\(error)")}नेटवर्क से HTML लोड करना और पार्स करना
अक्सर HTML HTTP के माध्यम से प्राप्त किया जाता है। यहाँ पेज लोड करने और डेटा निकालने का एक उदाहरण है:
import Foundationimport SwiftSoup
func fetchAndParse(urlString: String) async { guard let url = URL(string: urlString) else { return } do { let (data, _) = try await URLSession.shared.data(from: url) guard let html = String(data: data, encoding: .utf8) else { return } let doc = try SwiftSoup.parse(html) // सभी लिंक निकालें let links = try doc.select("a[href]") for link in links { let href = try link.attr("href") let text = try link.text() print("\\(text) -> \\(href)") } // h2 शीर्षक निकालें let headings = try doc.select("h2") for heading in headings { print("शीर्षक: \\(try heading.text())") } } catch { print("त्रुटि: \\(error)") }}
// उपयोगTask { await fetchAndParse(urlString: "https://example.com")}CSS-सेलेक्टर के साथ काम करना
SwiftSoup लगभग सभी मानक CSS-सेलेक्टर को सपोर्ट करता है, जो तत्वों की खोज को सहज बनाता है:
tag— टैग नाम से:try doc.select("div")#id— आईडी से:try doc.select("#main-content").class— क्लास से:try doc.select(".article-title")[attribute]— एट्रीब्यूट से:try doc.select("[data-id]")parent > child— प्रत्यक्ष चाइल्ड:try doc.select("ul > li")el:contains(t
पुस्तकालय में भी
Kotlin में प्रमाणीकरण और अधिकार: JWT, Spring Security और Ktor
Rust में JSON प्रसंस्करण: serde_json, simd-json, json5 और अन्य लाइब्रेरीज़
TypeScript में जियोलोकेशन और मैप्स: लाइब्रेरी और व्यावहारिक उदाहरण
C# (.NET) में कैशिंग: Redis, MemoryCache और अन्य समाधान