مكشطة الويب جافا

يُطلق على Web Scraping أيضًا اسم تجريف البيانات أو حصاد الويب أو زحف الويب الذي يستخدم لاستخراج البيانات من صفحات الويب. يمكن لمكشطة الويب استخدام أساليب مختلفة لاستخراج المعلومات. على سبيل المثال ، XPath ومحددات CSS والمرشحات المخصصة والتنقل عبر HTML وما إلى ذلك. وفقًا لمثل هذه السيناريوهات ، تتناول هذه المقالة كيفية إنشاء مكشطة ويب برمجيًا في Java.

تكوين مكتبة جافا ويب القشط

Aspose.HTML for Java تدعم واجهة برمجة التطبيقات (API) ميزات تجريف الويب باستخدام تقنيات مختلفة. يمكنك ببساطة الوصول إلى واجهة برمجة التطبيقات عن طريق تنزيل ملفات JAR من صفحة التنزيلات أو استخدام تكوينات Maven التالية في ملف pom.xml الخاص بمشروعك:

مخزن:

 <repositories>
     <repository>
         <id>snapshots</id>
         <name>repo</name>
         <url>http://repository.aspose.com/repo/</url>
     </repository>
</repositories>

الاعتماد:

 <dependencies>
    <dependency>
        <groupId>com.aspose</groupId>
        <artifactId>aspose-html</artifactId>
        <version>21.12</version>
        <classifier>jdk17</classifier>
    </dependency>
</dependencies>

تجريف الويب باستخدام التنقل بتنسيق HTML في Java

يمكنك العمل مع فئة Node للتنقل بين صفحات HTML. يوضح مقتطف الشفرة أدناه كيفية التنقل في مستند HTML في Java:

// قم بإعداد كود HTML
String html_code = "<span>Hello</span> <span>World!</span>";

// قم بتهيئة مستند من الكود المعد
com.aspose.html.HTMLDocument document = new com.aspose.html.HTMLDocument(html_code, ".");
try {
    // احصل على الإشارة إلى الطفل الأول (أول سبان) من الجسم
    com.aspose.html.dom.Element element = document.getBody().getFirstElementChild();
    System.out.println(element.getTextContent()); // output: Hello

    // احصل على المرجع لعنصر SPAN الثاني
    element = element.getNextElementSibling();
    System.out.println(element.getTextContent()); // output: World!
} finally {
    if (document != null) {
        document.dispose();
    }
}

فحص مستند HTML وعناصره في Java

يمكنك العمل باستخدام طريقة اجتياز العناصر للتنقل في صفحات HTML. يوضح نموذج التعليمات البرمجية أدناه بالتفصيل كيفية فحص مستندات HTML في Java.

// قم بتحميل مستند من ملف
String documentPath = "html_file.html";
var document = new com.aspose.html.HTMLDocument(documentPath);
{
    // احصل على عنصر html للمستند
    var element = document.getDocumentElement();                
    System.out.println(element.getTagName()); // HTML
    
    // احصل على العنصر الأخير من عنصر html
    element = element.getLastElementChild();
    System.out.println(element.getTagName()); // BODY
    
    // احصل على العنصر الأول من عنصر الجسم
    element = element.getFirstElementChild();
    System.out.println(element.getTagName()); // H1
    System.out.println(element.getTextContent()); // Header 1     
}

استخدام عامل التصفية المخصص لمكشطة الويب في Java

يمكنك تعيين عامل تصفية مخصص لتخطي أو قبول عوامل تصفية معينة للعمل مع مكشطة الويب في Java. يوضح نموذج التعليمات البرمجية أدناه كيفية العمل مع المرشحات المخصصة أو المحددة من قبل المستخدم في مكشطة الويب باستخدام Java:

public class OnlyImageFilter extends com.aspose.html.dom.traversal.filters.NodeFilter {

    @Override
    public short acceptNode(com.aspose.html.dom.Node n) {
        // يتخطى المرشح الحالي كل العناصر ، باستثناء عناصر IMG.
        return "img".equals(n.getLocalName()) ? FILTER_ACCEPT : FILTER_SKIP;
    }

}

بعد ذلك ، بعد إعداد عامل تصفية مخصص ، يمكنك التنقل بسهولة في صفحة HTML باستخدام مقتطف الشفرة أدناه:

// قم بإعداد كود HTML
String code = "    < p > Hello </p >\n" +
              "    <img src = 'image1.png' >\n" +
              "    <img src = 'image2.png' >\n" +
              "    <p > World ! </p >\n";

// قم بتهيئة مستند بناءً على الكود المعد
com.aspose.html.HTMLDocument document = new com.aspose.html.HTMLDocument(code, ".");
try {
    // لبدء التنقل عبر HTML ، نحتاج إلى إنشاء مثيل لـ TreeWalker.
    // تعني المعلمات المحددة أنها تبدأ في السير من جذر المستند ، وتكرار جميع العقد واستخدام تطبيقنا المخصص للمرشح
    com.aspose.html.dom.traversal.ITreeWalker iterator = document.createTreeWalker(document, com.aspose.html.dom.traversal.filters.NodeFilter.SHOW_ALL, new OnlyImageFilter());
    // يستخدم
    while (iterator.nextNode() != null) {
        // نظرًا لأننا نستخدم عامل التصفية الخاص بنا ، فستكون العقدة الحالية دائمًا مثيلًا لـ HTMLImageElement.
        // لذلك ، لسنا بحاجة إلى عمليات التحقق الإضافية هنا.
        com.aspose.html.HTMLImageElement image = (com.aspose.html.HTMLImageElement) iterator.getCurrentNode();

        System.out.println(image.getSrc());
        // الإخراج: image1.png
        // الإخراج: image2.png
    }
} finally {
    if (document != null) {
        document.dispose();
    }
}

تجريف الويب باستخدام XPath Query في Java

يمكنك تحديد عقد مختلفة لمستند HTML بمعايير مختلفة باستخدام XPath. يوضح الكود أدناه كيفية إجراء تجريف الويب باستخدام XPath Query في Java:

// قم بإعداد كود HTML
String code = "< div class='happy' >\n" +
              "        <div >\n" +
              "            <span > Hello ! </span >\n" +
              "        </div >\n" +
              "    </div >\n" +
              "    <p class='happy' >\n" +
              "        <span > World </span >\n" +
              "    </p >\n";

// قم بتهيئة مستند بناءً على الكود المعد
com.aspose.html.HTMLDocument document = new com.aspose.html.HTMLDocument(code, ".");
try {
    // نقوم هنا بتقييم تعبير XPath حيث نختار جميع عناصر SPAN التابعة من العناصر التي تساوي سمة "class" الخاصة بها "سعيد":
    com.aspose.html.dom.xpath.IXPathResult result = document.evaluate("//*[@class='happy']//span",
            document,
            null,
            com.aspose.html.dom.xpath.XPathResultType.Any,
            null
    );

    // كرر على العقد الناتجة
   for (com.aspose.html.dom.Node node; (node = result.iterateNext()) != null; ) {
        System.out.println(node.getTextContent());
        // الإخراج: مرحبًا
        // الإخراج: العالم!
    }
} finally {
    if (document != null) {
        document.dispose();
    }
}

تجريف الويب باستخدام CSS Selector في Java

يمكنك البحث عن العناصر المطلوبة في مكشطة الويب باستخدام محدد CSS. يمكنك تحديد معلمة كمحدد استعلام ثم يتم إرجاع قائمة تطابق المحدد إلى مكشطة الويب. يوضح نموذج التعليمات البرمجية التالي كيفية استخدام محدد CSS في مكشطة الويب باستخدام Java:

// قم بإعداد كود HTML
String code = "< div class='happy' >\n" +
              "        <div >\n" +
              "            <span > Hello </span >\n" +
              "        </div >\n" +
              "    </div >\n" +
              "    <p class='happy' >\n" +
              "        <span > World ! </span >\n" +
              "    </p >\n";

// قم بتهيئة مستند بناءً على الكود المعد
com.aspose.html.HTMLDocument document = new com.aspose.html.HTMLDocument(code, ".");
try {
    // نقوم هنا بإنشاء محدد CSS يستخرج جميع العناصر التي تساوي سمة "class" الخاصة بها "سعيد" وعناصر SPAN التابعة لها
    com.aspose.html.collections.NodeList elements = document.querySelectorAll(".happy span");

    // كرر على قائمة العناصر الناتجة
    elements.forEach(element -> {
        System.out.println(((com.aspose.html.HTMLElement) element).getInnerHTML());
        // الإخراج: مرحبًا
        // الإخراج: العالم!
    });
} finally {
    if (document != null) {
        document.dispose();
    }
}

استنتاج

في هذه المقالة ، قمت باستكشاف طرق مختلفة يمكن استخدامها لإنشاء مكشطة ويب في Java. تحتاج فقط إلى إجراء بعض استدعاءات API باستخدام مكتبة Aspose.HTML for Java لإنشاء أداة مكشطة ويب في Java. يمكنك استكشاف تقنيات HTML Navigation و CSS Selector و Custom filter و XPath Query في هذه المقالة. علاوة على ذلك ، لا تتردد في الاتصال بنا عبر المنتدى إذا كنت بحاجة إلى مزيد من المعلومات أو أي مساعدة.

أنظر أيضا

تحويل EPUB إلى XPS في Java