Web Scraper C#

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

C# Web Scraping ספריית

Aspose.HTML for .NET היא ספריית גרידה באינטרנט שניתן להגדיר בקלות על ידי הורדת קובצי ה-DLL הפניה מהקטע מהדורות חדשות או הפעלת פקודת ההתקנה הבאה של NuGet :

PM> Install-Package Aspose.Html

צור Web Scraper ב-C#

אתה יכול להשתמש במאפיינים שונים של המחלקה Node כדי לנווט במסמכי HTML. קטע הקוד שלהלן מסביר כיצד לנווט בדף אינטרנט HTML ב-C#:

// הכן קוד HTML
var html_code = "<span>Hello</span> <span>World!</span>";

// אתחול מסמך מהקוד המוכן
using (var document = new Aspose.Html.HTMLDocument(html_code, "."))
{
    // קבלו את ההתייחסות לילד הראשון (SPAN הראשון) של BODY
    var element = document.Body.FirstChild;
    Console.WriteLine(element.TextContent); // output: Hello

    // קבל את ההפניה לרווח הלבן בין רכיבי html
    element = element.NextSibling;
    Console.WriteLine(element.TextContent); // output: ' '

    // קבל את ההתייחסות לאלמנט SPAN השני
    element = element.NextSibling;
    Console.WriteLine(element.TextContent); // output: World!
}

בדיקת HTML עם Web Scraper ב-C#

ה-API מספק גם שימוש כללי בתכונות חציית אלמנטים. קטע הקוד הבא מדגים כיצד לבצע בדיקה מפורטת של אלמנטים שונים של ה-API.

//טען מסמך מקובץ
string documentPath = System.IO.Path.Combine(DataDir, "html_file.html");

// ציין את הנתיב לקובץ HTML המקור במערכת הקבצים המקומית שלך
using (var document = new Aspose.Html.HTMLDocument(documentPath))
{
    // קבל את רכיב ה-html של המסמך
    var element = document.DocumentElement;                
    Console.WriteLine(element.TagName); // HTML
    
    // קבל את האלמנט האחרון של אלמנט ה-html
    element = element.LastElementChild;
    Console.WriteLine(element.TagName); // BODY
    
    // קבל את האלמנט הראשון של אלמנט הגוף
    element = element.FirstElementChild;
    Console.WriteLine(element.TagName); // H1
    Console.WriteLine(element.TextContent); // Header 1     
}

שימוש במסנן מותאם אישית עבור Web Scraper ב-C#

אתה יכול ליישם מסנן מותאם אישית באמצעות אובייקט ממשק ITreeWalker או INodeIterator יחד עם מימוש מסנן מותאם אישית. קטע הקוד הבא מסביר כיצד לעקוב אחר התהליך:

class OnlyImageFilter : Aspose.Html.Dom.Traversal.Filters.NodeFilter
{
    public override short AcceptNode(Aspose.Html.Dom.Node n)
    {
        // המסנן הנוכחי מדלג על כל הרכיבים, למעט רכיבי IMG.
        return string.Equals("img", n.LocalName)
            ? FILTER_ACCEPT
            : FILTER_SKIP;
    }
}

לאחר הטמעת מסנן מותאם אישית, תוכל לנווט במהירות בדף אינטרנט עם הקוד הבא:

var code = @"
    <p>Hello</p>
    <img src='image1.png'>
    <img src='image2.png'>
    <p>World!</p>";

// אתחול מסמך על סמך הקוד המוכן
using (var document = new Aspose.Html.HTMLDocument(code, "."))
{
    // כדי להתחיל ניווט HTML עלינו ליצור מופע של TreeWalker.
    // הפרמטרים שצוינו פירושם שהוא מתחיל ללכת מהשורש של המסמך, לחזור על כל הצמתים ולהשתמש ביישום המותאם אישית שלנו של המסנן
    using (var iterator = document.CreateTreeWalker(document, Aspose.Html.Dom.Traversal.Filters.NodeFilter.SHOW_ALL, new OnlyImageFilter()))
    {         
        while (iterator.NextNode() != null)
        {
            // מכיוון שאנו משתמשים במסנן משלנו, הצומת הנוכחי תמיד יהיה מופע של HTMLImageElement.
            // אז, אנחנו לא צריכים את האימותים הנוספים כאן.
            var image = (Aspose.Html.HTMLImageElement)iterator.CurrentNode;

            System.Console.WriteLine(image.Src);
            // פלט: image1.png
            // פלט: image2.png
        }
    }
}

השתמש ב-XPath Query ליצירת Web Scraper ב-C#

ניתן להשתמש ב-XPath כדי לחלץ נתונים ממסמכי HTML. קטע הקוד הבא מפרט כיצד להשתמש ב-XPath Query עבור גירוד אינטרנט ב-C#:

// הכן קוד HTML
var code = @"
    <div class='happy'>
        <div>
            <span>Hello!</span>
        </div>
    </div>
    <p class='happy'>
        <span>World</span>
    </p>
";

// אתחול מסמך על סמך הקוד המוכן
using (var document = new Aspose.Html.HTMLDocument(code, "."))
{
    // כאן אנו מעריכים את ביטוי XPath שבו אנו בוחרים את כל רכיבי ה-SPAN של הילד מאלמנטים שתכונת ה-'class' שלהם שווה ל-'happy':
    var result = document.Evaluate("//*[@class='happy']//span",
        document,
        null,
        Aspose.Html.Dom.XPath.XPathResultType.Any,
        null);

    // חזור על הצמתים שהתקבלו
   for (Aspose.Html.Dom.Node node; (node = result.IterateNext()) != null;)
    {
        System.Console.WriteLine(node.TextContent);
        // פלט: שלום
        // פלט: עולם!
    }
}

השתמש בבורר CSS ל-Web Scraping ב-C#

ניתן ליצור דפוס חיפוש כדי להתאים אלמנטים בעץ מסמכים על סמך תחביר CSS Selectors. קטע הקוד שלהלן מסביר כיצד לבצע גירוד אינטרנט עם בורר CSS ב-C#:

// הכן קוד HTML
var code = @"
    <div class='happy'>
        <div>
            <span>Hello</span>
        </div>
    </div>
    <p class='happy'>
        <span>World!</span>
    </p>
";

// אתחול מסמך על סמך הקוד המוכן
using (var document = new Aspose.Html.HTMLDocument(code, "."))
{
    // כאן אנו יוצרים בורר CSS שמחלץ את כל האלמנטים שתכונת ה-'class' שלהם שווה ל-'happy' ורכיבי SPAN הילד שלהם
    var elements = document.QuerySelectorAll(".happy span");

    // חזור על רשימת האלמנטים שהתקבלה
    foreach (Aspose.Html.HTMLElement element in elements)
    {
        System.Console.WriteLine(element.InnerHTML);
        // פלט: שלום
        // פלט: עולם!
    }
}

קבל רישיון חינם

אתה יכול לבקש [רישיון זמני] בחינם7 כדי להעריך את ה-API במלוא קיומו.

סיכום

במאמר זה למדת על ספריית גירוד האינטרנט של C#, Aspose.HTML עבור .NET, הכוללת מספר שיטות ליצירת מגרד אינטרנט ב-C#. הוא דן בניווט HTML, שאילתת XPath, כמו גם שיטות בורר CSS כדי להשיג את הדרישות שלך. עם זאת, במקרה שאתה צריך לדון בכל החששות או השאלות שלך, אנא כתוב לנו ב-פורום.

ראה גם