تجريف الويب باستخدام C #

تجريف الويب هي تقنية تستخدم لاستخراج البيانات من مواقع الويب. يساعد على أتمتة عملية استخراج البيانات من مواقع الويب وملفات HTML. بصفتنا مطور C # ، يمكننا بسهولة فحص البيانات والتقاطها واستخراجها ، مثل الصور والفيديو والصوت وما إلى ذلك ، من صفحات الويب. في هذه المقالة ، سوف نتعلم كيفية إجراء تجريف الويب باستخدام تحليل HTML باستخدام C #.

سيتم تناول الموضوعات التالية في هذه المقالة:

C # Web Scraping API

لاقتطاع الويب من ملفات HTML أو عناوين URL ، سنستخدم Aspose.HTML for .NET API. إنها واجهة برمجة تطبيقات معالجة HTML متقدمة تسمح بإنشاء وتعديل واستخراج البيانات وتحويل وتقديم مستندات HTML دون أي برامج خارجية. يرجى إما تنزيل DLL الخاصة بواجهة برمجة التطبيقات أو تثبيته باستخدام NuGet.

PM> Install-Package Aspose.Html

قراءة واستخراج HTML باستخدام C

يمكننا قراءة واستخراج HTML من أي مستند HTML باتباع الخطوات الواردة أدناه:

  1. قم بتحميل مستند HTML باستخدام فئة HTMLDocument.
  2. اعرض HTML الداخلي للملف على وحدة التحكم.

يوضح نموذج التعليمات البرمجية التالي كيفية قراءة محتوى HTML واستخراجه باستخدام C #.

// يوضح مثال التعليمات البرمجية هذا كيفية إظهار محتويات مستند HTML
// تحميل مستند HTML
var document = new HTMLDocument(@"D:\Files\html\input.html");

// إظهار HTML الداخلي للمستند
Console.WriteLine(document.Body.InnerHTML);
قراءة واستخراج HTML باستخدام C #.

قراءة واستخراج HTML باستخدام C #.

وبالمثل ، يمكننا قراءة واستخراج HTML من مواقع الويب الحية كما هو موضح أدناه:

// يوضح مثال الرمز هذا كيفية إظهار المحتويات من عنوان URL المباشر لموقع الويب.
// تهيئة عنوان Url
Url url = new Url("https://en.wikipedia.org/wiki/HTML");

// قم بتحميل ملف HTML باستخدام مثيل Url
HTMLDocument document = new HTMLDocument(url);

// عرض HTML الداخلي للملف لوحدة التحكم
Console.WriteLine(document.Body.InnerHTML);

فحص عناصر المستند باستخدام C

يمكننا فحص الوثيقة وعناصرها باتباع الخطوات الواردة أدناه:

  1. قم بتحميل مستند HTML باستخدام فئة HTMLDocument.
  2. احصل على عنصر HTML للمستند.
  3. احصل على أول / آخر عناصر عنصر HTML.
  4. عرض تفاصيل عنصر مثل TagName ، TextContent.

يوضح نموذج التعليمات البرمجية التالي كيفية فحص عناصر المستند باستخدام C #.

// يوضح مثال الكود هذا كيفية فحص عناصر HTML.
// قم بتحميل مستند من ملف
string documentPath = @"D:\Files\html\input.html";
HTMLDocument document = new 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

البحث عن عنصر محدد باستخدام المرشحات في C

يمكننا استخدام المرشحات المخصصة للعثور على عنصر معين مثل الحصول على جميع الصور والروابط وما إلى ذلك. لهذا الغرض ، توفر واجهة برمجة التطبيقات واجهة TreeWalker. يسمح بالتنقل في شجرة مستند أو شجرة فرعية باستخدام عرض المستند المحدد بواسطة علامات whatToShow والتصفية (إن وجدت). يمكننا العثور على عناصر محددة باستخدام المرشحات باتباع الخطوات الواردة أدناه:

  1. حدد عوامل التصفية باستخدام فئة NodeFilter وتجاوز طريقة AcceptNode ().
  2. قم بتحميل مستند HTML باستخدام فئة HTMLDocument.
  3. قم باستدعاء طريقة CreateTreeWalker (). يأخذ عقدة الجذر ، وما لعرضه ، و NodeFilter كوسيطات.

يوضح نموذج التعليمات البرمجية التالي كيفية البحث عن عناصر محددة باستخدام C #.

// يوضح مثال الكود هذا كيفية الاستعلام عن البيانات باستخدام عوامل التصفية.
// قم بتحميل مستند HTML
HTMLDocument document = new HTMLDocument(@"D:\Files\html\input.html");

// لبدء التنقل عبر HTML ، نحتاج إلى إنشاء مثيل لـ TreeWalker.
// تعني المعلمات المحددة أنه يبدأ في المشي من جذر المستند ،
// تكرار جميع العقد واستخدام تطبيقنا المخصص للمرشح
using (var iterator = document.CreateTreeWalker(document, Dom.Traversal.Filters.NodeFilter.SHOW_ALL, new OnlyImageFilter()))
{
    while (iterator.NextNode() != null)
    {
        // نظرًا لأننا نستخدم عامل التصفية الخاص بنا ، فستكون العقدة الحالية دائمًا مثيلًا لـ HTMLImageElement.
        // لذلك ، لسنا بحاجة إلى عمليات التحقق الإضافية هنا.
        var image = (HTMLImageElement)iterator.CurrentNode;

        System.Console.WriteLine(image.Src);
        // الإخراج: image1.png
        // الإخراج: image2.png
    }
}
// يوضح مثال الكود هذا كيفية تعريف عامل تصفية العقدة.
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;
    }
}

الاستعلام عن البيانات من HTML باستخدام C

يمكننا أيضًا استخدام XPath Query للاستعلام عن البيانات من مستند HTML باتباع الخطوات الواردة أدناه:

  1. قم بتحميل مستند HTML باستخدام فئة HTMLDocument.
  2. قم باستدعاء طريقة التقييم (). يأخذ سلسلة تعبير XPath ، والمستند ، والنوع كوسائط.
  3. أخيرًا ، قم بالتكرار خلال العقد الناتجة واعرض النص

يُظهر نموذج التعليمات البرمجية التالي كيفية الاستعلام عن البيانات باستخدام استعلامات XPath باستخدام C #.

// يوضح مثال التعليمات البرمجية هذا كيفية اختبار البيانات باستخدام استعلام XPath.
// قم بإعداد كود HTML
var code = @"
    <div class='happy'>
        <div>
            <span>Hello!</span>
        </div>
    </div>
    <p class='happy'>
        <span>World</span>
    </p>
";

// قم بتهيئة مستند بناءً على الكود المعد
HTMLDocument document = new HTMLDocument(code, ".");

// هنا نقوم بتقييم تعبير XPath حيث نختار جميع عناصر SPAN التابعة 
// من العناصر التي تساوي صفة "class" الخاص بها كلمة "سعيد":
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 Selector في C

يمكننا أيضًا استخراج محتوى HTML باستخدام محددات CSS. لهذا الغرض ، توفر واجهة برمجة التطبيقات طريقة QuerySelectorAll () التي تتيح التنقل عبر مستند HTML والبحث في العناصر المطلوبة. يأخذ محدد الاستعلام كمعامل ويعيد NodeList مطابقة لجميع العناصر. يمكننا الاستعلام باستخدام محددات CSS باتباع الخطوات الواردة أدناه:

  1. قم بتحميل مستند HTML باستخدام فئة HTMLDocument.
  2. قم باستدعاء الأسلوب QuerySelectorAll (). يأخذ محدد الاستعلام كوسيطة.
  3. أخيرًا ، قم بعمل تكرار لقائمة العناصر الناتجة.

يوضح نموذج التعليمات البرمجية التالي كيفية استخراج محتوى HTML باستخدام محددات CSS في C #.

// قم بتهيئة مستند بناءً على الكود المعد
HTMLDocument document = new HTMLDocument(@"D:\Files\html\input.html");

// هنا نقوم بإنشاء CSS Selector الذي يستخرج جميع عناصر div
var elements = document.QuerySelectorAll("div");

// كرر على قائمة العناصر الناتجة
foreach (Aspose.Html.HTMLElement element in elements)
{
    System.Console.WriteLine(element.InnerHTML);
}

احصل على رخصة مجانية

يرجى تجربة واجهة برمجة التطبيقات بدون قيود التقييم من خلال طلب ترخيص مؤقت مجاني.

استنتاج

في هذه المقالة ، تعلمنا كيفية:

  • قراءة واستخراج محتوى مستند HTML باستخدام C # ؛
  • فحص عناصر المستند والعثور على عنصر محدد من HTML ؛
  • البيانات الخاصة بالاستعلام واستخراج البيانات باستخدام CSS Selector.

بالإضافة إلى ذلك ، يمكنك معرفة المزيد حول Aspose.HTML لـ .NET API باستخدام التوثيق. في حالة وجود أي غموض ، فلا تتردد في الاتصال بنا على المنتدى.

أنظر أيضا