AngleSharp es una biblioteca .NET que le brinda la capacidad de analizar los hiper-textos basados en el soporte como HTML, SVG y MATHML. XML sin validación también es compatible con la biblioteca. Un aspecto importante de Anglesharp es que CSS también se puede analizar. El analizador incluido se basa en la especificación W3C oficial. Esto produce una representación DOM HTML5 perfectamente portátil del código fuente dado y garantiza la compatibilidad con los resultados en los navegadores de hoja perenne. También las características de DOM estándar, como querySelector o querySelectorAll trabajan para el recorrido de los árboles.
⚡⚡ Migrando de Anglesharp 0.9 a Anglesharp 0.10 o posterior (incl. 1.0)? Mire nuestra documentación de migración. ⚡⚡
BrowsingContext es como una pestaña del navegador: ¡controlársela desde .net!). La ventaja sobre bibliotecas similares como HTMlagilityPack es que el DOM expuesto está utilizando la API oficial específica de W3C, es decir, que incluso cosas como querySelectorAll están disponibles en Anglesharp. También el analizador utiliza la especificación HTML 5.1, que define el manejo de errores y la corrección de elementos. La Biblioteca Anglesharp se centra en el cumplimiento de los estándares, la interactividad y la extensibilidad. Por lo tanto, está dando a los desarrolladores web que trabajan con C# todas las posibilidades como saben al usar el DOM en cualquier navegador moderno.
El rendimiento de Anglesharp está bastante cerca del rendimiento de los navegadores. Incluso las páginas muy grandes se pueden procesar dentro de los milisegundos. AngleHarp intenta minimizar las asignaciones de memoria y reutiliza elementos internamente para evitar la creación innecesaria de objetos.
El ejemplo simple utilizará el sitio web de Wikipedia para la recuperación de datos.
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 ) ;O lo mismo con los tipos explícitos:
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 ) ;En el ejemplo que vemos:
Cada colección en Anglesharp admite declaraciones LINQ. AngleHarp también proporciona muchos métodos de extensión útiles para colecciones de elementos que no se pueden encontrar en el DOM oficial.
AngleSharp se ha creado como una biblioteca compatible .NET Standard 2.0. Esto incluye, pero no se limita a:
La documentación de Anglesharp se encuentra en la carpeta Docs. Se pueden encontrar más ejemplos, mejores prácticas e información general allí. La documentación también contiene una lista de preguntas frecuentes.
También hay más información disponible siguiendo algunas de las referencias hiper mencionadas en el wiki. Los artículos en profundidad se publicarán en CodeProject, con enlaces que se colocan en la wiki en Github.
El proyecto tiene como objetivo llevar una implementación sólida del W3C DOM para HTML, SVG, MATHML y CSS al CLR, todo escrito en C#. La idea es que básicamente puede hacer todo con el DOM en C# que puede hacer en JavaScript (además, por supuesto, más).
La mayoría de las partes del DOM están incluidas, a pesar de que algunas aún pueden perder su implementación (completamente especificada / correcta). El objetivo para V1.0 es tener todas las partes prácticamente relevantes implementadas de acuerdo con la especificación W3C oficial (con extensiones útiles por parte de WhatWG).
La API está cerca de la especificación DOM4, sin embargo, el nombre se ha ajustado para aplicarse con las convenciones .NET. Sin embargo, para que Anglesharp sea realmente útil para, por ejemplo, un motor JavaScript, se han colocado atributos en las interfaces (y métodos, propiedades, ...) correspondientes para indicar el estado del campo en la especificación oficial. Esto permite la generación automática de objetos DOM con la API oficial.
Este es un proyecto a largo plazo que eventualmente dará como resultado un analizador de última generación para los hiper-textos basados en el soporte de ángulo más importante.
Nuestra esperanza es construir una comunidad alrededor del análisis web y las bibliotecas de este proyecto. Hasta ahora tuvimos grandes contribuciones, pero ese objetivo no se logró por completo. ¿Quieres ayudar? ¡Ponte en contacto con nosotros!
Si conoce alguna característica que Anglesharp se falta actualmente, y está dispuesto a implementar la función, ¡su contribución es más que bienvenida! Además, si tienes una idea realmente genial, no seas tímido, nos gustaría escucharla.
Si tiene una idea de cómo mejorar la API (o lo que falta), las publicaciones / mensajes también son bienvenidos. Por ejemplo, ha habido discusiones en curso sobre algunos estilos que han sido utilizados por Anglesharp (por ejemplo, HTMLDocument o HtmlDocument ) en el pasado. Al final, AngleSharp dejó de usar HTMLDocument (al menos visible fuera de la biblioteca). Ahora Anglesharp usa nombres como IDocument , IHtmlElement , etc. Este cambio no hubiera sido posible sin discusiones tan fructíferas.
El proyecto siempre está buscando contribuyentes adicionales. Incluso si no tiene ningún código para contribuir, sino una idea de mejora, un informe de error o un error en la documentación. Estas son las contribuciones que mantienen este proyecto activo.
Las discusiones en vivo pueden tener lugar en nuestro chat Gitter, que admite el uso de cuentas de Github.
Se encuentra más información en las pautas de contribución. Todos los contribuyentes se pueden encontrar en el archivo de contribuyentes.
Este proyecto también ha adoptado el Código de Conducta definido por el Pacto de contribuyente para aclarar el comportamiento esperado en nuestra comunidad.
Para obtener más información, consulte el Código de Conducta de la Fundación .NET.
Si usa Anglesharp con frecuencia, pero no tiene tiempo para apoyar el proyecto por participación activa, aún puede estar interesado en garantizar que los proyectos Anglesharp mantengan las luces encendidas.
Por lo tanto, creamos un modelo de respaldo a través de BountySource. Cualquier donación es bienvenida y muy apreciada. Principalmente gastaremos el dinero en el tiempo de desarrollo dedicado para mejorar Anglesharp donde debe mejorarse, además de invertir en el ecosistema de utilidad web en .NET (por ejemplo, en motores JavaScript, otros programadores o un renderizador para Anglesharp para mencionar algunos proyectos pendientes).
Visite BountySource para más detalles.
AngleSharp está escrito en la versión más reciente de C# y, por lo tanto, requiere Roslyn como compilador. Se recomienda usar un IDE como Visual Studio 2019+ en Windows. Alternativamente, VScode (con Omnisharp u otra implementación adecuada del protocolo del servidor de idiomas) debe ser la herramienta elegida en otras plataformas.
El código intenta estar lo más limpio posible. En particular, se utilizan las siguientes reglas:
-Async cuando estén disponiblesSin embargo, lo más importante es el uso adecuado de las pruebas. Cualquier característica nueva debe venir con un conjunto de pruebas para cubrir la funcionalidad y evitar la regresión.
Existe un cambio de cambio muy detallado. Si solo está interesado en los lanzamientos importantes, eche un vistazo a los lanzamientos de GitHub.
Este proyecto es compatible con la Fundación .NET.
AngleSharp se libera utilizando la licencia MIT. Para obtener más información, consulte el archivo de licencia.