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

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

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

ابدأ الدورة

تحليل HTML في Java: نظرة على المكتبات وأمثلة عملية



تحليل HTML (استخراج البيانات من صفحات الويب) هو إحدى المهام الأساسية في التطوير الحديث. توفر Java أدوات قوية لهذا الغرض. في هذه المقالة، سنستعرض ثلاث مكتبات شائعة: Jsoup وHtmlUnit وApache Tika. ستتعلم كيفية تثبيتها، وما المهام التي تحلها، وسترى أمثلة عملية للكود.



لماذا نحتاج إلى تحليل HTML؟

يُستخدم تحليل HTML من أجل:

  • جمع البيانات من مواقع الويب (الأسعار، الأخبار، جهات الاتصال).
  • اختبار تطبيقات الويب (استخراج عناصر الواجهة).
  • أتمتة العمليات الروتينية (ملء النماذج، التحقق من الروابط).
  • تحليل هيكل SEO للمواقع.


1. Jsoup — أشهر محلل HTML لـ Java

Jsoup هي مكتبة خفيفة وبديهية للعمل مع HTML. يمكنها تحميل الصفحات، وتحليلها، واستخراج البيانات باستخدام محددات CSS وطرق مشابهة لـ jQuery. تقوم Jsoup تلقائيًا بتصحيح الترميز غير الصحيح، مما يجعلها مثالية لتحليل المواقع الحقيقية.



التثبيت (Maven)

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


مثال: استخراج عناوين جميع الأخبار

لنفترض أننا بحاجة للحصول على جميع عناوين المقالات من بوابة إخبارية. نستخدم المحدد h2.news-title.

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

public class JsoupExample { public static void main(String[] args) throws Exception { // تحميل صفحة HTML Document doc = Jsoup.connect("https://example.com/news") .userAgent("Mozilla/5.0") .timeout(5000) .get();

// استخراج جميع عناصر h2 ذات الفئة "news-title" Elements titles = doc.select("h2.news-title");

// طباعة نص كل عنوان for (var title : titles) { System.out.println(title.text()); } }}

ميزات Jsoup:

  • تعمل بدون متصفح، فقط طلبات HTTP.
  • دعم محددات CSS (كما في jQuery).
  • إمكانية التعامل مع DOM (إضافة، حذف العناصر).
  • لا تستطيع تنفيذ JavaScript.


2. HtmlUnit — تحليل مع دعم JavaScript

HtmlUnit هو محاكي متصفح بلغة Java. لا يقوم فقط بتحليل HTML، بل يعالج الصفحة بالكامل: ينفذ JavaScript، ويحمل CSS، ويعالج طلبات AJAX. مثالي لمواقع SPA الحديثة (React، Angular).



التثبيت (Maven)

<dependency>    <groupId>net.sourceforge.htmlunit</groupId>    <artifactId>htmlunit</artifactId>    <version>2.70.0</version></dependency>


مثال: الحصول على البيانات بعد تحميل JavaScript

لنفترض أن هناك كتلة ديناميكية على الصفحة تظهر بعد ثانيتين من التحميل. سينتظرها HtmlUnit.

import com.gargoylesoftware.htmlunit.WebClient;import com.gargoylesoftware.htmlunit.html.HtmlPage;import com.gargoylesoftware.htmlunit.html.HtmlElement;

public class HtmlUnitExample { public static void main(String[] args) throws Exception { try (WebClient webClient = new WebClient()) { // تعطيل CSS والتسجيل للسرعة webClient.getOptions().setCssEnabled(false); webClient.getOptions().setJavaScriptEnabled(true);

// تحميل الصفحة HtmlPage page = webClient.getPage("https://example.com/dynamic");

توصيات