स्विफ्ट (iOS/macOS) में HTML पार्सिंग: SwiftSoup और Fuzi लाइब्रेरीज़

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

स्विफ्ट (iOS/macOS) में HTML पार्सिंग: SwiftSoup और Fuzi लाइब्रेरीज़ का अवलोकन



iOS और macOS के लिए एप्लिकेशन विकसित करते समय, अक्सर वेब पेजों से डेटा निकालने की आवश्यकता होती है। HTML पार्सिंग स्वचालित रूप से सामग्री प्राप्त करने, उसे संरचित करने और एप्लिकेशन में उपयोग करने की अनुमति देता है। Swift पारिस्थितिकी तंत्र में इस उद्देश्य के लिए कई शक्तिशाली लाइब्रेरीज़ मौजूद हैं। इस लेख में, हम दो सबसे लोकप्रिय लाइब्रेरीज़: SwiftSoup और Fuzi पर विस्तार से चर्चा करेंगे। आप सीखेंगे कि उन्हें कैसे स्थापित करें, बुनियादी पार्सिंग ऑपरेशन कैसे करें, और प्रत्येक की विशेषताएं क्या हैं।



Swift में HTML पार्सिंग की आवश्यकता क्यों है?

HTML पार्सिंग निम्नलिखित परिदृश्यों में उपयोगी है:

  • डेटा एकत्रीकरण — कई साइटों से समाचार, मूल्य, उत्पाद विवरण एकत्र करना।
  • परिवर्तनों की निगरानी — लक्ष्य पृष्ठों पर अपडेट को ट्रैक करना।
  • वेब सेवाओं के साथ एकीकरण — यदि साइट API प्रदान नहीं करती है, तो डेटा प्राप्त करने का एकमात्र तरीका पार्सिंग है।
  • परीक्षण स्वचालन — HTML संरचना की शुद्धता की जाँच करना।


SwiftSoup लाइब्रेरी

SwiftSoup लोकप्रिय Java लाइब्रेरी Jsoup का Swift पोर्ट है। यह HTML दस्तावेज़ों को पार्स करने, नेविगेट करने और हेरफेर करने के लिए एक सुविधाजनक API प्रदान करता है। SwiftSoup CSS सेलेक्टर्स का समर्थन करता है, जो तत्वों को निकालने को सरल और सहज बनाता है।



SwiftSoup की स्थापना

अपने Package.swift में या Xcode में Swift Package Manager के माध्यम से निर्भरता जोड़ें:

// Package.swiftdependencies: [    .package(url: "https://github.com/scinfu/SwiftSoup.git", from: "2.6.0")]


SwiftSoup उपयोग का उदाहरण

एक सरल उदाहरण देखें: हम एक HTML स्ट्रिंग लोड करेंगे और <h2> शीर्षक और <a> लिंक निकालेंगे।

import SwiftSoup

func parseHTML() { let html = """ <html> <body> <h2>लेख का शीर्षक</h2> <p>पैराग्राफ का टेक्स्ट।</p> <a href="https://example.com">लिंक</a> </body> </html> """ do { let doc = try SwiftSoup.parse(html) // सभी h2 शीर्षक निकालें let headers = try doc.select("h2") for header in headers { print("शीर्षक: \\(try header.text())") } // सभी लिंक निकालें let links = try doc.select("a[href]") for link in links { let linkText = try link.text() let linkHref = try link.attr("href") print("टेक्स्ट: \\(linkText), URL: \\(linkHref)") } } catch { print("पार्सिंग त्रुटि: \\(error)") }}

इस उदाहरण में, हम सभी दूसरे स्तर के शीर्षकों का चयन करने के लिए CSS सेलेक्टर "h2" के साथ select() विधि का उपयोग करते हैं, और href विशेषता वाले सभी लिंक का चयन करने के लिए "a[href]" का उपयोग करते हैं। text() विधि तत्व की टेक्स्ट सामग्री लौटाती है, और attr() निर्दिष्ट विशेषता का मान लौटाती है।



दस्तावेज़ ट्री में नेविगेशन

SwiftSoup DOM ट्री में घूमने की अनुमति देता है:

// पहला h2 तत्व प्राप्त करेंif let firstHeader = try doc.select("h2").first() {    print("पहला शीर्षक: \\(try firstHeader.text())")}

// मूल तत्व प्राप्त करेंlet parent = try firstHeader.parent()print("मूल: \\(try parent?.tagName() ?? "nil")")

// अगला सहोदर तत्व प्राप्त करेंlet nextSibling = try firstHeader.nextElementSibling()print("अगला तत्व: \\(try nextSibling?.tagName() ?? "nil")")


Fuzi लाइब्रेरी

Fuzi Swift में HTML और XML पार्स करने के लिए एक और लोकप्रिय लाइब्रेरी है। यह libxml2 पर आधारित है और उच्च प्रदर्शन के लिए जानी जाती है। Fuzi CSS सेलेक्टर्स और XPath क्वेरीज़ का भी समर्थन करती है।

अनुशंसाएँ