تحليل HTML في Java: مكتبات Jsoup وHtmlUnit

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

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

ابدأ الدورة

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



تحليل HTML (أو استخراج بيانات الويب) هو عملية استخراج البيانات من مستندات HTML. في Java، توجد عدة مكتبات قوية لهذه المهمة، من أبرزها Jsoup (لـ HTML الثابت) وHtmlUnit (للصفحات الديناميكية التي تستخدم JavaScript). في هذه المقالة، سنشرح بالتفصيل كلتا المكتبتين، ونعرض أمثلة على الكود، ونساعدك في اختيار الأداة المناسبة لمشروعك على pythonlib.ru.



ما هو Jsoup؟

Jsoup هي مكتبة خفيفة الوزن لتحليل واستخراج ومعالجة مستندات HTML. تدعم محددات CSS، مما يجعلها بديهية لمطوري الويب. تعمل Jsoup مع أي HTML، حتى لو كان غير صحيح البنية.



تثبيت Jsoup

أضف التبعية إلى ملف pom.xml الخاص بك (Maven):

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


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

لننظر إلى مثال أساسي — الحصول على عنوان الصفحة وجميع الروابط:

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

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

// 2. استخراج عنوان الصفحة String title = doc.title(); System.out.println("العنوان: " + title);

// 3. العثور على جميع الروابط (وسوم <a>) Elements links = doc.select("a[href]"); for (Element link : links) { String href = link.attr("href"); String text = link.text(); System.out.println("الرابط: " + href + " — النص: " + text); }

// 4. استخراج النص من كتلة معينة (مثل <div class="content">) Element content = doc.selectFirst("div.content"); if (content != null) { System.out.println("محتوى الكتلة: " + content.text()); } }}

في هذا المثال، يقوم Jsoup.connect() بتنفيذ طلب HTTP، ويستخدم select() محددات CSS للبحث عن العناصر. يمكن لـ Jsoup أيضًا العمل مع الملفات المحلية وسلاسل HTML.



ما هو HtmlUnit؟

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



تثبيت HtmlUnit

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


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

تحليل صفحة تقوم بتحميل البيانات عبر JavaScript:

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 { // 1. إنشاء WebClient (مشابه للمتصفح) try (WebClient webClient = new WebClient()) { // تعطيل CSS والتسجيل لتسريع الأداء webClient.getOptions().setCssEnabled(false); webClient.getOptions().setJavaScriptEnabled(true); webClient.getOptions().setThrowExceptionOnScriptError(false);

// 2. تحميل الصفحة (سيتم تنفيذ JavaScript تلقائيًا) HtmlPage page = webClient.getPage("https://example.com/dynamic");

// 3. الانتظار، ثم

توصيات