تحليل HTML في Kotlin: المكتبات وأمثلة الكود

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

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

تحليل HTML في Kotlin: نظرة شاملة على الأدوات والمكتبات



Kotlin هي لغة برمجة حديثة تعمل على JVM و Android والمتصفح. بفضل توافقها مع Java ومكتبتها القياسية القوية، تقدم Kotlin عدة طرق فعالة لتحليل HTML. في هذه المقالة، سنستعرض المكتبات الرئيسية لتحليل HTML في Kotlin، وميزاتها، ونقدم أمثلة عملية على الكود.



1. Jsoup — محلل HTML شامل لـ Kotlin



Jsoup هي المكتبة الأكثر شيوعًا لتحليل HTML على JVM. تعمل بشكل ممتاز مع Kotlin بفضل التوافق الكامل مع Java. تسمح Jsoup بتحميل HTML من URL أو ملف أو سلسلة نصية، ثم استخراج البيانات باستخدام محددات CSS والتنقل عبر DOM.



تثبيت Jsoup في مشروع Kotlin

أضف التبعية في ملف build.gradle.kts:

dependencies {    implementation("org.jsoup:jsoup:1.17.2")}


مثال على تحليل HTML باستخدام Jsoup

import org.jsoup.Jsoupimport org.jsoup.nodes.Document

fun main() { val url = "https://example.com" val doc: Document = Jsoup.connect(url).get() val title = doc.title() println("عنوان الصفحة: $title") // استخراج جميع الروابط val links = doc.select("a[href]") links.forEach { link -> println("الرابط: ${link.attr("abs:href")} — ${link.text()}") } // تحليل من سلسلة نصية val html = "<div class='content'>مرحبًا، Kotlin!</div>" val parsed = Jsoup.parse(html) val text = parsed.select(".content").text() println("النص من HTML: $text")}


2. Ktor Client + kotlinx.html — نهج Kotlin الأصلي



للمشاريع التي تستخدم Ktor كعميل HTTP، سيكون الجمع بين ktor-client و kotlinx.html خيارًا ممتازًا. الأول مسؤول عن تحميل الصفحات، والثاني عن تحليل HTML إلى هيكل DOM مصنف.



التبعيات لـ Ktor و kotlinx.html

dependencies {    implementation("io.ktor:ktor-client-core:2.3.7")    implementation("io.ktor:ktor-client-cio:2.3.7")    implementation("org.jetbrains.kotlinx:kotlinx-html-jvm:0.11.0")}


مثال على التحليل باستخدام Ktor و kotlinx.html

import io.ktor.client.*import io.ktor.client.request.*import io.ktor.client.statement.*import kotlinx.html.*import kotlinx.html.parser.*

suspend fun parseHtmlWithKtor() { val client = HttpClient() val response: HttpResponse = client.get("https://example.com") val htmlContent = response.bodyAsText() val document = parseHtml(htmlContent) val title = document.head?.title ?: "بدون عنوان" println("العنوان: $title") // استخراج جميع الفقرات document.body?.allElements?.filterIsInstance<P>()?.forEach { p -> println("فقرة: ${p.text}") } client.close()}


3. مقارنة مكتبات تحليل HTML في Kotlin



يعتمد اختيار الأداة على المهمة المحددة. إليك المعايير الأساسية:



  • Jsoup — الخيار الأفضل للتحليل المعقد باستخدام محددات CSS. مناسب لاستخراج البيانات، واستخراج الجداول، والنماذج، وعناصر الوسائط.
  • Ktor + kotlinx.html — مثالي للمشاريع التي تستخدم Ktor حيث يكون التحليل الخفيف مطلوبًا دون تبعيات إضافية. يعمل بشكل غير متزامن.
  • HtmlCleaner — مكتبة Java أخرى متوافقة جيدًا مع Kotlin. مفيدة لتنظيف HTML "القذر".
  • OkHttp + Jsoup — مزيج للتحكم الدقيق في طلبات HTTP مع تحليل قوي.


4. تقنيات متقدمة للتحليل في Kotlin



استخراج البيانات باستخدام محددات CSS (Jsoup)

val doc = Jsoup.connect("https://news.ycombinator.com").get()val stories = doc.select("tr.athing")stories.forEach { story ->                    

توصيات