Anglesharp est une bibliothèque .NET qui vous donne la possibilité d'analyser les hyper-textes basés sur le support d'angle comme HTML, SVG et MathML. XML sans validation est également pris en charge par la bibliothèque. Un aspect important d'Anglesharp est que le CSS peut également être analysé. L'analyseur inclus est construit sur les spécifications officielles du W3C. Cela produit une représentation DOM HTML5 parfaitement portable du code source donné et garantit la compatibilité avec les résultats des navigateurs à feuilles persistantes. Des fonctionnalités DOM standard telles que querySelector ou querySelectorAll fonctionnent pour la traversée des arbres.
⚡⚡ Migrant d'Anglesharp 0,9 vers Anglesharp 0,10 ou ultérieure (incl. 1.0)? Regardez notre documentation de migration. ⚡⚡
BrowsingContext est comme un onglet de navigateur - Contrôlez-le à partir de .NET!). L'avantage sur des bibliothèques similaires comme HTMLagilityPack est que le DOM exposé utilise l'API spécifiée W3C officielle, c'est-à-dire que même des choses comme querySelectorAll sont disponibles dans Anglesharp. L'analyseur utilise également la spécification HTML 5.1, qui définit la gestion des erreurs et la correction des éléments. La bibliothèque Anglesharp se concentre sur la conformité, l'interactivité et l'extensibilité des normes. Il donne donc à des développeurs Web de travailler avec C # toutes les possibilités comme ils le savent en utilisant le DOM dans n'importe quel navigateur moderne.
Les performances d'Anglesharp sont assez proches des performances des navigateurs. Même de très grandes pages peuvent être traitées en quelques millisecondes. Anglesharp essaie de minimiser les allocations de mémoire et réutilise les éléments en interne pour éviter la création d'objets inutile.
L'exemple simple utilisera le site Web de Wikipedia pour la récupération des données.
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 ) ;Ou la même chose avec des types explicites:
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 ) ;Dans l'exemple, nous voyons:
Chaque collection dans Anglesharp prend en charge les instructions LINQ. AnglesHarp fournit également de nombreuses méthodes d'extension utiles pour les collections d'éléments qui ne peuvent pas être trouvées dans le DOM officiel.
Anglesharp a été créé en tant que bibliothèque compatible .NET Standard 2.0. Cela comprend, mais sans s'y limiter:
La documentation d'Anglesharp est située dans le dossier DOCS. Plus d'exemples, les meilleures pratiques et les informations générales peuvent y être trouvées. La documentation contient également une liste de questions fréquemment posées.
Plus d'informations sont également disponibles en suivant certaines des références hyper mentionnées dans le wiki. Des articles approfondis seront publiés sur le codeproject, avec des liens placés dans le wiki de Github.
Le projet vise à apporter une mise en œuvre solide du DOM W3C pour HTML, SVG, MATHML et CSS au CLR - tous écrits en C #. L'idée est que vous pouvez essentiellement faire tout avec le DOM en C # que vous pouvez faire en JavaScript (plus, bien sûr, plus).
La plupart des parties du DOM sont incluses, même si certains peuvent toujours manquer leur implémentation (entièrement spécifiée / correcte). L'objectif de la V1.0 est d'avoir toutes les pièces pratiquement pertinentes en œuvre selon la spécification officielle du W3C (avec des extensions utiles par le whatwg).
L'API est proche de la spécification DOM4, cependant, la dénomination a été ajustée pour s'appliquer aux conventions .NET. Néanmoins, pour rendre Anglesharp vraiment utile pour, par exemple, un moteur JavaScript, des attributs ont été placés sur les interfaces (et méthodes, propriétés, ...) correspondantes pour indiquer l'état du champ dans la spécification officielle. Cela permet une génération automatique d'objets DOM avec l'API officielle.
Il s'agit d'un projet à long terme qui entraînera éventuellement un analyseur de pointe pour les hyper-textes basés sur un support d'angle le plus important.
Notre espoir est de construire une communauté autour de l'analyse Web et des bibliothèques de ce projet. Jusqu'à présent, nous avons eu de grandes contributions, mais cet objectif n'a pas été pleinement atteint. Vous voulez aider? Contactez-nous!
Si vous connaissez une fonctionnalité qu'Anglesharp est actuellement manquant et que vous êtes prêt à implémenter la fonctionnalité, votre contribution est plus que bienvenue! De plus, si vous avez une idée vraiment cool - ne soyez pas timide, nous aimerions l'entendre.
Si vous avez une idée de la façon d'améliorer l'API (ou ce qui manque), les publications / messages sont également les bienvenus. Par exemple, il y a eu des discussions en cours sur certains styles qui ont été utilisés par Anglesharp (par exemple, HTMLDocument ou HtmlDocument ) dans le passé. À la fin d'Anglesharp a cessé d'utiliser HTMLDocument (au moins visible en dehors de la bibliothèque). Maintenant, AnglesHarp utilise des noms comme IDocument , IHtmlElement et ainsi de suite. Ce changement n'aurait pas été possible sans de telles discussions fructueuses.
Le projet recherche toujours des contributeurs supplémentaires. Même si vous n'avez pas de code pour contribuer, mais plutôt une idée d'amélioration, un rapport de bogue ou une erreur dans la documentation. Ce sont les contributions qui maintiennent ce projet actif.
Les discussions en direct peuvent avoir lieu dans notre chat Gitter, qui prend en charge l'utilisation de comptes GitHub.
Plus d'informations se trouvent dans les directives de contribution. Tous les contributeurs peuvent être trouvés dans le dossier des contributeurs.
Ce projet a également adopté le code de conduite défini par le Cont contributeur pour clarifier le comportement attendu dans notre communauté.
Pour plus d'informations, consultez le Code de conduite de la fondation .NET.
Si vous utilisez fréquemment Anglesharp, mais que vous n'avez pas le temps de soutenir le projet par participation active, vous pouvez toujours être intéressé pour vous assurer que les projets Anglesharp maintiennent les lumières.
Par conséquent, nous avons créé un modèle de support via BountySource. Tout don est le bienvenu et très apprécié. Nous dépenserons principalement de l'argent en temps de développement dévoué pour améliorer Anglesharp où il doit être amélioré, et investir dans l'écosystème d'utilité Web dans .NET (par exemple, dans des moteurs JavaScript, d'autres analyseurs ou un rendu pour Anglesharp pour mentionner certains projets en cours).
Visitez BountySource pour plus de détails.
Anglesharp est écrit dans la version la plus récente de C # et nécessite donc Roslyn en tant que compilateur. L'utilisation d'un IDE comme Visual Studio 2019+ est recommandée sur Windows. Alternativement, VSCODE (avec Omnisharp ou une autre implémentation de protocole de serveur de langage approprié) devrait être l'outil de choix sur d'autres plates-formes.
Le code essaie d'être aussi propre que possible. Notamment les règles suivantes sont utilisées:
-Async lorsqu'elles sont disponiblesPlus important, cependant, est l'utilisation appropriée des tests. Toute nouvelle fonctionnalité doit être livrée avec un ensemble de tests pour couvrir la fonctionnalité et empêcher la régression.
Un Changelog très détaillé existe. Si vous êtes simplement intéressé par les versions majeures, jetez un œil aux versions GitHub.
Ce projet est soutenu par la Fondation .NET.
Anglesharp est libéré à l'aide de la licence MIT. Pour plus d'informations, consultez le fichier de licence.