Swift पार्सिंग के लिए क्यों है बेस्ट? जानिए असली वजह
\n\nजब भी इंटरनेट से डेटा इकट्ठा करने की बात आती है, तो ज़्यादातर लोग Python के BeautifulSoup और Scrapy के बारे में सोचते हैं। लेकिन क्या होगा अगर मैं आपको बताऊं कि Swift, जिस भाषा का उपयोग आप iOS ऐप बनाने में करते हैं, वह भी उतना ही कमाल कर सकती है? जी हां, आपने सही सुना। Swift में पार्सिंग सिर्फ एक एक्सपेरिमेंट नहीं, बल्कि एक पावरफुल टूल है जो समान कार्यों में Python से 2-3 गुना तेज़ काम कर सकता है। और आज हम यही साबित करेंगे।
\n\nइस आर्टिकल में आप सीखेंगे कि एनवायरनमेंट कैसे सेट करें, अपना पहला Swift पार्सर कैसे लिखें, एरर को कैसे हैंडल करें और डेटा को कैसे सेव करें। हम कोई जटिल एब्स्ट्रैक्शन नहीं करेंगे — सिर्फ साफ और समझने योग्य कोड, जिसे आप 15 मिनट में रन कर सकते हैं।
\n\nSwift में पार्सिंग और स्क्रैपिंग क्या है?
\n\nSwift पार्सिंग का मतलब है Swift प्रोग्रामिंग भाषा का उपयोग करके वेब पेजों या डॉक्यूमेंट्स से स्ट्रक्चर्ड डेटा निकालना। Python पर आधारित पारंपरिक वेब स्क्रैपिंग के विपरीत, Swift iOS/macOS के साथ नेटिव इंटीग्रेशन प्रदान करता है, जो इसे ऐसे ऐप बनाने के लिए आदर्श बनाता है जो खुद डेटा इकट्ठा करते हैं।
\n\nSwift डेटा स्क्रैपिंग के मुख्य उपयोग:
\n- \n
- प्रतिस्पर्धियों की निगरानी के लिए ई-कॉमर्स साइटों से कीमतें इकट्ठा करना \n
- डायरेक्टरी साइटों से संपर्क जानकारी निकालना \n
- न्यूज़ फीड और ब्लॉग का विश्लेषण करना \n
- ऐप के लिए खुद का API बनाना (जब ऑफिशियल API उपलब्ध न हो) \n
Swift में पार्सिंग के लिए हम दो मुख्य तकनीकों का उपयोग करेंगे: HTML पेज लोड करने के लिए URLSession और HTML डॉक्यूमेंट पार्स करने के लिए SwiftSoup लाइब्रेरी। SwiftSoup, Python के BeautifulSoup का Swift वर्जन है, जो पूरी तरह से Swift में लिखा गया है।
प्रोजेक्ट सेटअप और इंस्टॉलेशन
\n\nसबसे पहले SwiftSoup इंस्टॉल करना होगा। Swift Package Manager के ज़रिए यह सबसे आसान है। Xcode में नया प्रोजेक्ट बनाएं या मौजूदा प्रोजेक्ट खोलें, फिर यह डिपेंडेंसी जोड़ें:
\n\n// Package.swift में\ndependencies: [\n .package(url: "https://github.com/scinfu/SwiftSoup.git", from: "2.6.0")\n]\n\nया, अगर आप Xcode के बिना SPM का उपयोग कर रहे हैं, तो बस अपने Package.swift में ऊपर दी गई लाइन जोड़ें।
दूसरा तरीका CocoaPods का उपयोग करना है:
\npod 'SwiftSoup', '~> 2.6.0'\n\nइंस्टॉल करने के बाद, अपने कोड में लाइब्रेरी को इम्पोर्ट करें:
\nimport SwiftSoup\nimport Foundation\n\nबस! अब हम पार्सर लिखना शुरू कर सकते हैं।
\n\nSwift में पहला पार्सर लिखें: स्टेप-बाय-स्टेप
\n\nचलिए एक पार्सर लिखते हैं जो Hacker News (news.ycombinator.com) के मुख्य पेज से आर्टिकल के टाइटल निकालता है। पार्सिंग सीखने के लिए यह एक क्लासिक उदाहरण है।
\n\nस्टेप 1: HTML पेज लोड करना
\n\nडेटा को एसिंक्रोनस रूप से लोड करने के लिए URLSession का उपयोग करें। Swift async/await को सपोर्ट करता है, इसलिए हम मॉडर्न अप्रोच अपनाएंगे।
func fetchHTML(from urlString: String) async throws -> String {\n guard let url = URL(string: urlString) else {\n throw URLError(.badURL)\n }\n \n let (data, _) = try await URLSession.shared.data(from: url)\n guard let html = String(data: data, encoding: .utf8) else {\n throw URLError(.cannotDecodeContentData)\n }\n \n return html\n}\n\nध्यान दें: हम HTML स्ट्रिंग लौटा रहे हैं। यह रॉ डेटा है जिसे हम पार्स करेंगे।
\n\nस्टेप 2: SwiftSoup से HTML पार्स करना
\n\nअब असली मज़ा — डेटा निकालना। SwiftSoup CSS सेलेक्टर्स की तरह काम करता है: आप बताते हैं कि आपको कौन से एलिमेंट चाहिए।
\n\nfunc parseTitles(from html: String) throws -> [String] {\n let doc = try SwiftSoup.parse(html)\n let titles = try doc.select(".titleline a").array()\n \n var result: [String] = []\n for title in titles {\n let text = try title.text()\n