Web Scraper Java

גירוד אינטרנט נקרא גם גירוד נתונים, קצירת אינטרנט או סריקת אינטרנט המשמשת לחילוץ נתונים מדפי האינטרנט. מגרד אינטרנט יכול להשתמש בגישות שונות כדי לחלץ מידע. לדוגמה, XPath, בוררי CSS, מסננים מותאמים אישית, ניווט HTML וכו’. בהתאם לתרחישים כאלה, מאמר זה מכסה כיצד ליצור מגרד אינטרנט באופן פרוגרמטי ב-Java.

תצורת ספריית גירוד אינטרנט של Java

Aspose.HTML עבור Java תומכים ב-API מציעים תכונות של גירוד אינטרנט תוך שימוש בטכניקות שונות. אתה יכול פשוט לגשת ל-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 {
    // קבלו את ההתייחסות לילד הראשון (SPAN הראשון) של BODY
    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     
}

שימוש מסנן מותאם אישית עבור Web Scraper ב-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' שלהם שווה ל-'happy':
    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 ב-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' שלהם שווה ל-'happy' ורכיבי 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, בורר CSS, מסנן מותאם אישית ו-Xpath Query במאמר זה. יתר על כן, אנא אל תהסס ליצור איתנו קשר דרך הפורום אם אתה זקוק למידע נוסף או כל סיוע.

ראה גם

המר EPUB ל-XPS ב-Java