Kotlin में डेटा पार्सिंग और स्क्रैपिंग: शुरुआत से वास्तविक प्रोजेक्ट तक

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

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

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

Kotlin में डेटा पार्सिंग और स्क्रैपिंग: यह आपके ध्यान के योग्य क्यों है

\n\n

जब इंटरनेट से डेटा एकत्र करने की बात आती है, तो अक्सर Python अपने BeautifulSoup और Scrapy के साथ दिमाग में आता है। लेकिन क्या होगा यदि आपका स्टैक JVM है और आपका मन संक्षिप्त और सुरक्षित कोड की ओर झुकता है? मिलिए: Kotlin। यह भाषा सिर्फ "एक और Java" नहीं है, बल्कि डेटा पार्सिंग और स्क्रैपिंग के लिए एक शक्तिशाली उपकरण है, जो आपको बिना किसी अनावश्यक शोर के स्वच्छ, उच्च-प्रदर्शन और एसिंक्रोनस कोड लिखने की अनुमति देता है।

\n\n

इस लेख में, हम देखेंगे कि Kotlin को सूचना संग्रह के लिए एक वास्तविक मशीन कैसे बनाया जाए। आप जानेंगे कि किन लाइब्रेरी का उपयोग करना है, साइट के बैन से कैसे बचना है, और बिना सिरदर्द के हजारों पेजों को कैसे संसाधित करना है। चलिए शुरू करते हैं!

\n\n

Kotlin में डेटा पार्सिंग और स्क्रैपिंग क्या है

\n\n

कोड में गोता लगाने से पहले, आइए बिंदुओं को स्पष्ट कर लें।

\n
    \n
  • वेब स्क्रैपिंग (scraping) — वेब पेजों से बड़े पैमाने पर डेटा निकालना है। आप HTML लोड करते हैं, उसे पार्स करते हैं और आवश्यक टुकड़े लेते हैं: कीमतें, शीर्षक, उत्पाद विवरण।
  • \n
  • पार्सिंग (parsing) — एक संकीर्ण अवधारणा है। यह डेटा संरचना (HTML, JSON, XML) को प्रोग्राम के लिए सुविधाजनक रूप में विश्लेषित करना है। पार्सिंग स्क्रैपिंग का एक हिस्सा है।
  • \n
\n\n

Kotlin में, कार्यात्मक क्षमताओं, सख्त टाइपिंग और कोरूटीन के उत्कृष्ट समर्थन के कारण डेटा पार्सिंग और स्क्रैपिंग सुरुचिपूर्ण ढंग से कार्यान्वित की जाती है। आपको ऐसा कोड मिलता है जिसे पढ़ना, परीक्षण करना और बनाए रखना आसान है।

\n\n

Kotlin में डेटा पार्सिंग और स्क्रैपिंग के लिए लाइब्रेरी

\n\n

लाइब्रेरी का चुनाव 50% सफलता है। Kotlin के लिए यहाँ मुख्य बुनियादी सेट है:

\n\n
    \n
  • Jsoup — HTML पार्सिंग का स्वर्ण मानक। JVM पर काम करता है, टेढ़े-मेढ़े लेआउट को भी समझता है।
  • \n
  • Ktor Client — JetBrains से एसिंक्रोनस HTTP क्लाइंट। कोरूटीन के साथ जोड़ी के लिए आदर्श।
  • \n
  • kotlinx.serialization — बिना दर्द के JSON सीरियलाइज़ेशन।
  • \n
  • OkHttp — यदि अनुरोधों पर अधिक निम्न-स्तरीय नियंत्रण की आवश्यकता हो।
  • \n
  • HtmlUnit — उन साइटों के लिए जो JavaScript के माध्यम से सामग्री प्रस्तुत करती हैं (शायद ही कभी, लेकिन होता है)।
  • \n
\n\n

इस लेख में, हम Ktor + Jsoup + kotlinx.serialization के संयोजन पर ध्यान केंद्रित करेंगे — यह अधिकतम नियंत्रण और गति प्रदान करता है।

\n\n

व्यावहारिक उदाहरण: Kotlin में एक वेबसाइट से डेटा पार्स करना

\n\n

Kotlin में डेटा स्क्रैपिंग को समझने का सबसे अच्छा तरीका एक वास्तविक स्क्रिप्ट लिखना है। मान लीजिए कि हम एक एग्रीगेटर साइट (जैसे हैबर या किताबों की दुकान) से पुस्तकों के बारे में जानकारी एकत्र कर रहे हैं। हमारा लक्ष्य: प्रत्येक पुस्तक का शीर्षक, लेखक और मूल्य प्राप्त करना।

\n\n

चरण 1. प्रोजेक्ट सेटअप

\n\n

एक नया Gradle प्रोजेक्ट बनाएं और build.gradle.kts में निर्भरताएँ जोड़ें:

\n\n
dependencies {\n    implementation("io.ktor:ktor-client-core:2.3.7")\n    implementation("io.ktor:ktor-client-cio:2.3.7")\n    implementation("org.jsoup:jsoup:1.17.2")\n    implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.6.2")\n    implementation("ch.qos.logback:logback-classic:1.4.14")\n}
\n\n

चरण 2. पेज लोड करने के लिए HTTP क्लाइंट लिखना

\n\n

एसिंक्रोनस लोडिंग के लिए Ktor Client का उपयोग करें। कोरूटीन थ्रेड को ब्लॉक किए बिना ऐसा करने की अनुमति देते हैं।

\n\n
import io.ktor.client.*\nimport io.ktor.client.request.*\nimport io.ktor.client.statement.*\nimport kotlinx.coroutines.runBlocking\n\nclass PageLoader(private val client: HttpClient) {\n\n    suspend fun loadPage(url: String): String {\n        val response: HttpResponse = client.get(url)\n        return response.bodyAsText()\n    }\n}\n\nfun main() = runBlocking {\n    val client = HttpClient {\n        // टाइमआउट, यूज़र-एजेंट आदि कॉन्फ़िगर किए जा सकते हैं\n    }\n    val loader = PageLoader(client)\n    val html = loader.loadPage("https://example-books.com/catalog")\n    println(html.take(500)) // जाँच के लिए पहले 500 अक्षर प्रिंट करें\n    client.close()\n}
\n\n

चरण 3. पार

ब्लॉग

पुस्तक अनुशंसाएँ