تحليل واستخراج البيانات بلغة Kotlin: من المبتدئ إلى مشروع حقيقي

مدرب بايثون أونلاين للمبتدئين

تعلم 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، يتم تنفيذ تحليل واستخراج البيانات بأناقة بفضل الإمكانيات الوظيفية، والكتابة الصارمة، والدعم الممتاز لـ coroutines. تحصل على كود يسهل قراءته واختباره وصيانته.

\n\n

مكتبات تحليل واستخراج البيانات بلغة Kotlin

\n\n

اختيار المكتبة هو 50% من النجاح. إليك المجموعة الأساسية لـ Kotlin:

\n\n
    \n
  • Jsoup — المعيار الذهبي لتحليل HTML. يعمل على JVM ويفهم حتى التنسيقات المعقدة.
  • \n
  • Ktor Client — عميل HTTP غير متزامن من JetBrains. مثالي للتكامل مع coroutines.
  • \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 للتحميل غير المتزامن. تسمح coroutines بذلك دون حظر الخيط.

\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. تحل

المدونات

توصيات الكتب