تحليل HTML في Java: Jsoup وHtmlUnit وأدوات أخرى

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

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

ابدأ الدورة

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



تحليل HTML هو عملية استخراج البيانات المنظمة من مستندات HTML. في Java، توجد عدة مكتبات قوية لهذه المهمة، تسمح ليس فقط بتحليل الصفحات الثابتة، ولكن أيضًا بمعالجة المحتوى الديناميكي. في هذه المقالة، سنستعرض ثلاث أدوات الأكثر شيوعًا: Jsoup وHtmlUnit وJericho HTML Parser. لكل منها ميزاته الخاصة ومجالات استخدامه.



1. Jsoup — محلل HTML متعدد الاستخدامات



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



الإمكانيات الرئيسية:

  • تحميل HTML من URL أو ملف أو سلسلة نصية
  • استخراج البيانات باستخدام محددات CSS
  • تنظيف HTML من العلامات غير المرغوب فيها
  • تعديل DOM (إضافة/إزالة العناصر)
  • التصحيح التلقائي لـ HTML غير الصحيح


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

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"); // طباعة نص كل عنوان titles.forEach(title -> System.out.println(title.text())); }}


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



HtmlUnit هو متصفح بدون واجهة رسومية (headless browser) في Java يحاكي عمل متصفح الويب. على عكس Jsoup، يقوم بتنفيذ كود JavaScript، ويعالج طلبات AJAX، ويدعم ملفات تعريف الارتباط (cookies). إنها أداة لا غنى عنها لتحليل تطبيقات SPA الحديثة والمواقع ذات المحتوى الديناميكي.



الميزات الرئيسية:

  • محاكاة كاملة للمتصفح (Chrome, Firefox, IE)
  • تنفيذ JavaScript (بما في ذلك jQuery وReact)
  • دعم النماذج والنقرات والتنقل بين الصفحات
  • العمل مع ملفات تعريف الارتباط والجلسات وإعادة التوجيه
  • دعم مدمج لـ XPath ومحددات CSS


مثال تعليمات برمجية: انتظار تحميل المحتوى الديناميكي

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()) { // تعطيل التسجيل والمهلات الزمنية webClient.getOptions().setThrowExceptionOnScriptError(false); webClient.getOptions().setJavaScriptEnabled(true); // تحميل الصفحة HtmlPage page = webClient.getPage("https://example.com/dynamic"); // الانتظار لمدة ثانيتين لتنفيذ JS webClient.waitForBackgroundJavaScript(2000); // استخراج البيانات باستخدام XPath HtmlElement element = page.getFirstByXPath("//div[@class='result']/p"); System.out.println("النتيجة: " + element.getTextContent()); } }}


3. Jericho HTML Parser — خفيف وسريع



Jericho HTML Parser هي مكتبة خفيفة ذات تبعيات قليلة. تتعامل بشكل ممتاز مع تحليل HTML غير الصحيح وتوفر وصولاً منخفض المستوى إلى بنية المستند.

توصيات