دليل Jsoup الشامل لـ Java: أمثلة وأساليب عملية

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

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

ابدأ الدورة

Jsoup لـ Java: الدليل الشامل لتحليل HTML

1. ما هو Jsoup ولماذا تحتاجه؟

Jsoup هي مكتبة Java مفتوحة المصدر وقوية وسهلة الاستخدام، مصممة لتحليل (parsing) واستخراج البيانات والتلاعب بمستندات HTML. توفر للمطورين واجهة برمجة تطبيقات (API) نظيفة وبديهية تسمح بالتعامل مع HTML بسهولة مثل التعامل مع شجرة DOM في المتصفح. إذا سبق لك كتابة تعبيرات منتظمة (Regular Expressions) لاستخراج البيانات من صفحات الويب، فأنت تعلم كم يمكن أن يكون هذا الحل هشًا وصعب الصيانة. Jsoup يحل هذه المشكلة بتقديم أداة موثوقة ومرنة.

المهمة الأساسية لـ Jsoup هي تحليل HTML. يمكنه استقبال نص (string) أو رابط URL أو ملف وتحويلها إلى نموذج كائن المستند (DOM). بعد ذلك، يمكنك استخدام محددات CSS (مثل jQuery) أو التنقل عبر شجرة DOM للبحث عن عناصر محددة واستخراجها، بالإضافة إلى سماتها ومحتواها النصي. علاوة على ذلك، يمكن لـ Jsoup تنظيف HTML من العناصر التي قد تشكل خطرًا (مثل هجمات XSS) وتعديل المستند: إضافة أو حذف أو تغيير العلامات ومحتوياتها.

لماذا تحتاج هذا؟ مجالات استخدام Jsoup واسعة جدًا: من كتابة أدوات بسيطة لجمع البيانات (web scraping) ومراقبة الأسعار، إلى بناء أنظمة معقدة لتحليل المحتوى واختبار تطبيقات الويب والتكامل مع أنظمة إدارة المحتوى (CMS). Jsoup هو المعيار الفعلي للتعامل مع HTML في عالم Java، ومعرفته ضرورية لأي مطور Java يتعامل مع تقنيات الويب.

2. تثبيت Jsoup

يتم توزيع Jsoup كملف JAR، ولكن الطريقة الأسهل هي ربطه عبر نظام بناء. فيما يلي الأوامر الخاصة بـ Maven و Gradle.

Maven (pom.xml)

<dependency>
    <groupId>org.jsoup</groupId>
    <artifactId>jsoup</artifactId>
    <version>1.17.2</version>
</dependency>

Gradle (build.gradle)

implementation 'org.jsoup:jsoup:1.17.2'

إذا كنت لا تستخدم أنظمة البناء، قم بتنزيل ملف JAR من الموقع الرسمي وأضفه إلى classpath الخاص بمشروعك.

3. بداية سريعة: مثال عملي بسيط

لنكتب برنامجًا بسيطًا يقوم بتحميل الصفحة الرئيسية لـ Google ويعرض عنوانها.

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;

public class QuickStart {
    public static void main(String[] args) throws Exception {
        // 1. تحميل مستند HTML من URL
        Document doc = Jsoup.connect("https://www.google.com").get();

        // 2. استخراج عنوان الصفحة (محتوى الوسم <title>)
        String title = doc.title();

        // 3. عرض النتيجة
        System.out.println("عنوان الصفحة: " + title);
    }
}

يقوم هذا الكود بإجراء طلب HTTP GET إلى الرابط المحدد، ويحلل HTML المستلم، ويعيد كائن Document. الطريقة title() هي طريقة سهلة للحصول على محتوى الوسم <title>. سيكون الناتج مشابهًا لـ: عنوان الصفحة: Google.

4. أهم الأساليب والفئات في Jsoup

دعنا نستعرض الفئات والأساليب الرئيسية في المكتبة. جميع الأمثلة تفترض أنك قمت باستيراد org.jsoup.Jsoup و org.jsoup.nodes.*.

4.1. Jsoup.connect(String url)

التوقيع: public static Connection connect(String url)

الوظيفة: ينشئ اتصال HTTP جديدًا بالرابط المحدد. يعيد كائن Connection، والذي

توصيات