AngleSharp هي مكتبة .NET التي تمنحك القدرة على تحليل Hyper-Texts القائمة على شريحة الزاوية مثل HTML و SVG و Mathml. يتم دعم XML بدون التحقق من الصحة أيضًا من قبل المكتبة. أحد الجوانب المهمة من AngleSharp هو أنه يمكن أيضًا تحليل CSS. تم بناء المحلل المدمج على مواصفات W3C الرسمية. ينتج عن ذلك تمثيل HTML5 DOM محمول تمامًا من رمز المصدر المعطى ويضمن التوافق مع النتائج في متصفحات دائمة الخضرة. أيضا ميزات DOM القياسية مثل querySelector أو querySelectorAll العمل من أجل اجتياز الأشجار.
⚡⚡ الهجرة من anglesharp 0.9 إلى anglesharp 0.10 أو الأحدث (بما في ذلك 1.0)؟ انظر إلى وثائق الترحيل لدينا. ⚡⚡
BrowsingContext يشبه علامة التبويب المتصفح - التحكم فيها من .NET!). تتمثل الميزة على مكتبات مماثلة مثل HTMLAGILITYPACK هي أن DOM المكشوفة تستخدم واجهة برمجة تطبيقات W3C المحددة الرسمية ، أي أنه حتى أشياء مثل querySelectorAll متوفرة في Anglesharp. يستخدم المحلل أيضًا مواصفات HTML 5.1 ، والتي تحدد معالجة الأخطاء وتصحيح العناصر. تركز مكتبة AngleSharp على الامتثال للمعايير والتفاعل والتوسيع. وبالتالي ، فإنه يمنح مطوري الويب يعملون مع جميع الاحتمالات التي يعرفونها من استخدام DOM في أي متصفح حديث.
أداء AngleSharp قريب جدًا من أداء المتصفحات. حتى الصفحات الكبيرة جدا يمكن معالجتها داخل ميلي ثانية. يحاول AngleSharp تقليل تخصيصات الذاكرة وإعادة استخدام العناصر داخليًا لتجنب إنشاء الكائن غير الضروري.
المثال البسيط سيستخدم موقع الويب الخاص بـ Wikipedia لاسترجاع البيانات.
var config = Configuration . Default . WithDefaultLoader ( ) ;
var address = "https://en.wikipedia.org/wiki/List_of_The_Big_Bang_Theory_episodes" ;
var context = BrowsingContext . New ( config ) ;
var document = await context . OpenAsync ( address ) ;
var cellSelector = "tr.vevent td:nth-child(3)" ;
var cells = document . QuerySelectorAll ( cellSelector ) ;
var titles = cells . Select ( m => m . TextContent ) ;أو نفس الشيء مع الأنواع الصريحة:
IConfiguration config = Configuration . Default . WithDefaultLoader ( ) ;
string address = "https://en.wikipedia.org/wiki/List_of_The_Big_Bang_Theory_episodes" ;
IBrowsingContext context = BrowsingContext . New ( config ) ;
IDocument document = await context . OpenAsync ( address ) ;
string cellSelector = "tr.vevent td:nth-child(3)" ;
IHtmlCollection < IElement > cells = document . QuerySelectorAll ( cellSelector ) ;
IEnumerable < string > titles = cells . Select ( m => m . TextContent ) ;في المثال ، نرى:
كل مجموعة في AngleSharp تدعم عبارات LINQ. يوفر AngleSharp أيضًا العديد من طرق التمديد المفيدة لمجموعات العناصر التي لا يمكن العثور عليها في DOM الرسمية.
تم إنشاء anglesharp كمكتبة متوافقة مع قياسية 2.0. ويشمل ذلك ، على سبيل المثال لا الحصر:
يقع وثائق Anglsharp في مجلد المستندات. يمكن العثور على المزيد من الأمثلة وأفضل الممارسات والمعلومات العامة هناك. تحتوي الوثائق أيضًا على قائمة أسئلة يتم طرحها بشكل متكرر.
يتوفر مزيد من المعلومات أيضًا باتباع بعض المراجع المفرطة المذكورة في الويكي. سيتم نشر المقالات المتعمقة على مشروع CodeProject ، مع وضع الروابط في الويكي في Github.
يهدف المشروع إلى تقديم تطبيق قوي لـ W3C DOM لـ HTML و SVG و MATHML و CSS إلى CLR - كلها مكتوبة في C#. والفكرة هي أنه يمكنك أن تفعل كل شيء بشكل أساسي مع DOM في C# يمكنك القيام به في JavaScript (بالإضافة إلى ذلك ، بالطبع ، المزيد).
يتم تضمين معظم أجزاء DOM ، على الرغم من أن البعض قد لا يزال يفوتك تنفيذها (المحدد / الصحيح بالكامل). الهدف من V1.0 هو تنفيذ جميع الأجزاء ذات الصلة عمليًا وفقًا لمواصفات W3C الرسمية (مع امتدادات مفيدة من خلال WhatWG).
API قريبة من مواصفات DOM4 ، ومع ذلك ، تم تعديل التسمية لتطبيق مع اتفاقيات .NET. ومع ذلك ، لجعل AngleSharp مفيدًا حقًا ، على سبيل المثال ، محرك JavaScript ، تم وضع سمات على الواجهات المقابلة (والأساليب ، الخصائص ، ...) للإشارة إلى حالة الحقل في المواصفات الرسمية. هذا يسمح للتوليد التلقائي من كائنات DOM مع واجهة برمجة التطبيقات الرسمية.
هذا مشروع طويل الأجل سيؤدي في نهاية المطاف إلى محلل محلل فني لأهم شريحة الزاوية القائمة على شريحة الزاوية.
أملنا هو بناء مجتمع حول تحليل الويب والمكتبات من هذا المشروع. حتى الآن كان لدينا مساهمات كبيرة ، لكن هذا الهدف لم يتحقق بالكامل. تريد المساعدة؟ تواصل معنا!
إذا كنت تعرف بعض الميزات التي تفتقدها AngleSharp حاليًا ، وأنت على استعداد لتنفيذ الميزة ، فإن مساهمتك أكثر من موضع ترحيب! وأيضًا إذا كان لديك فكرة رائعة حقًا - لا تخجل ، فنحن نود أن نسمعها.
إذا كانت لديك فكرة عن كيفية تحسين واجهة برمجة التطبيقات (أو ما هو مفقود) ، فسيتم أيضًا ترحيب المشاركات / الرسائل. على سبيل المثال ، كانت هناك مناقشات مستمرة حول بعض الأنماط التي استخدمها AngleSharp (على سبيل المثال ، HTMLDocument أو HtmlDocument ) في الماضي. في النهاية ، توقفت AngleSharp باستخدام HTMLDocument (على الأقل مرئيًا خارج المكتبة). الآن يستخدم anglesharp أسماء مثل IDocument و IHtmlElement وما إلى ذلك. هذا التغيير لم يكن ممكنا دون مثل هذه المناقشات المثمرة.
يبحث المشروع دائمًا عن مساهمين إضافيين. حتى لو لم يكن لديك أي رمز للمساهمة ، بل فكرة عن التحسين أو تقرير الأخطاء أو خطأ في الوثائق. هذه هي المساهمات التي تبقي هذا المشروع نشطة.
يمكن أن تجري المناقشات الحية في دردشة Gitter الخاصة بنا ، والتي تدعم استخدام حسابات GitHub.
تم العثور على مزيد من المعلومات في إرشادات المساهمة. يمكن العثور على جميع المساهمين في ملف المساهمين.
اعتمد هذا المشروع أيضًا مدونة السلوك التي حددها العهد المساهم لتوضيح السلوك المتوقع في مجتمعنا.
لمزيد من المعلومات ، انظر .NET Foundation Code of Code.
إذا كنت تستخدم AngleSharp بشكل متكرر ، ولكن ليس لديك الوقت لدعم المشروع من خلال المشاركة النشطة ، فقد لا تزال مهتمًا بالتأكد من أن مشاريع AngleSharp تحافظ على الأضواء.
لذلك أنشأنا نموذج دعم عبر Bountysource. أي تبرع موضع ترحيب وتقدير كبير. سننفق في الغالب الأموال على وقت التطوير المخصص لتحسين أنوليسشار حيث يجب تحسينه ، بالإضافة إلى الاستثمار في نظام الويب البيئي للأداة المساعدة في .NET (على سبيل المثال ، في محركات JavaScript ، أو تحليلات أخرى ، أو عارض لـ Anglsharp لذكر بعض المشاريع المعلقة).
زيارة Bountysource لمزيد من التفاصيل.
تتم كتابة AngleSharp في أحدث إصدار من C# وبالتالي يتطلب Roslyn كمترجم. يوصى باستخدام IDE مثل Visual Studio 2019+ على Windows. بدلاً من ذلك ، يجب أن يكون VSCODE (مع OMNINGHARP أو تطبيق بروتوكول خادم لغة آخر مناسب) هو الأداة المفضلة على الأنظمة الأساسية الأخرى.
يحاول الرمز أن يكون نظيفًا قدر الإمكان. والجدير بالذكر أن القواعد التالية تستخدم:
-Async -عند توفرهاالأهم من ذلك ، هو الاستخدام الصحيح للاختبارات. يجب أن تأتي أي ميزة جديدة مع مجموعة من الاختبارات لتغطية الوظيفة ومنع الانحدار.
يوجد تغيير مفصل للغاية. إذا كنت مهتمًا فقط بالإصدارات الرئيسية ، فقم بإلقاء نظرة على إصدارات GitHub.
هذا المشروع مدعوم من قبل مؤسسة .NET.
يتم إصدار AngleSharp باستخدام ترخيص MIT. لمزيد من المعلومات ، انظر ملف الترخيص.