Anglesharp é uma biblioteca .NET que oferece a capacidade de analisar hiper-textos baseados em suporte de ângulo como HTML, SVG e MathML. O XML sem validação também é suportado pela biblioteca. Um aspecto importante do Anglesharp é que o CSS também pode ser analisado. O analisador incluído é construído sobre a especificação oficial do W3C. Isso produz uma representação HTML5 DOM perfeitamente portátil do código -fonte fornecido e garante compatibilidade com resultados em navegadores sempre -verdes. Também recursos padrão do DOM, como querySelector ou o trabalho querySelectorAll para travessia de árvores.
⚡⚡ Migrando de Anglesharp 0,9 para Anglesharp 0,10 ou posterior (incl. 1,0)? Veja nossa documentação de migração. ⚡⚡
BrowsingContext é como uma guia do navegador - controla -a de .NET!). A vantagem em relação a bibliotecas semelhantes como o htmlagilitypack é que o DOM exposto está usando a API oficial especificada pelo W3C, ou seja, que mesmo coisas como querySelectorAll estão disponíveis no Anglesharp. Além disso, o analisador usa a especificação HTML 5.1, que define o manuseio de erros e a correção do elemento. A Biblioteca Anglesharp se concentra na conformidade, interatividade e extensibilidade dos padrões. Portanto, está dando aos desenvolvedores da Web que trabalham com todas as possibilidades do C#, como sabem ao usar o DOM em qualquer navegador moderno.
O desempenho do Anglesharp está bastante próximo do desempenho dos navegadores. Mesmo páginas muito grandes podem ser processadas em milissegundos. Anglesharp tenta minimizar as alocações de memória e reutiliza elementos internamente para evitar a criação desnecessária de objetos.
O exemplo simples usará o site da Wikipedia para recuperação de dados.
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 o mesmo com 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 ) ;No exemplo que vemos:
Toda coleção em Anglesharp suporta instruções LINQ. O Anglesharp também fornece muitos métodos de extensão úteis para coleções de elementos que não podem ser encontradas no DOM oficial.
O Anglesharp foi criado como uma biblioteca compatível com padrão .NET 2.0. Isso inclui, mas não está limitado a:
A documentação do Anglesharp está localizada na pasta Docs. Mais exemplos, melhores práticas e informações gerais podem ser encontrados lá. A documentação também contém uma lista de perguntas frequentes.
Mais informações também estão disponíveis seguindo algumas das hiper -referências mencionadas no wiki. Os artigos detalhados serão publicados no CodeProject, com os links sendo colocados no wiki no GitHub.
O projeto visa trazer uma sólida implementação do W3C DOM para HTML, SVG, MATHML e CSS para o CLR - todos escritos em C#. A idéia é que você possa basicamente fazer tudo com o DOM em C# que você pode fazer no JavaScript (além disso, é claro, mais).
A maioria das partes do DOM está incluída, embora alguns ainda possam perder a implementação (totalmente especificada / correta). O objetivo da v1.0 é ter todas as peças praticamente relevantes implementadas de acordo com a especificação oficial do W3C (com extensões úteis do Whatwg).
A API está próxima da especificação DOM4, no entanto, a nomeação foi ajustada para aplicar com convenções .NET. No entanto, para tornar os anglesharp realmente úteis para, por exemplo, um mecanismo JavaScript, os atributos foram colocados nas interfaces correspondentes (e métodos, propriedades, ...) para indicar o status do campo na especificação oficial. Isso permite a geração automática de objetos DOM com a API oficial.
Este é um projeto de longo prazo que acabará resultando em um analisador de última geração para os hiper-textos baseados em suporte de ângulo mais importantes.
Nossa esperança é construir uma comunidade em torno da análise da web e bibliotecas a partir deste projeto. Até agora, tivemos ótimas contribuições, mas esse objetivo não foi totalmente alcançado. Quer ajudar? Entre em contato conosco!
Se você conhece algum recurso que o Anglesharp está ausente e está disposto a implementar o recurso, sua contribuição é mais do que bem -vinda! Além disso, se você tem uma ideia muito legal - não seja tímido, gostaríamos de ouvir.
Se você tiver uma idéia de como melhorar a API (ou o que está faltando), as postagens / mensagens também serão bem -vindas. Por exemplo, houve discussões em andamento sobre alguns estilos que foram usados pelo Anglesharp (por exemplo, HTMLDocument ou HtmlDocument ) no passado. No final, Anglesharp parou de usar HTMLDocument (pelo menos visível fora da biblioteca). Agora, o Anglesharp usa nomes como IDocument , IHtmlElement e assim por diante. Essa mudança não teria sido possível sem discussões tão frutíferas.
O projeto está sempre procurando contribuidores adicionais. Mesmo se você não tiver nenhum código para contribuir, mas uma idéia de melhoria, um relatório de bug ou um erro na documentação. Essas são as contribuições que mantêm esse projeto ativo.
As discussões ao vivo podem ocorrer em nosso bate -papo, que suporta o uso de contas do GitHub.
Mais informações são encontradas nas diretrizes de contribuição. Todos os colaboradores podem ser encontrados no arquivo dos colaboradores.
Este projeto também adotou o Código de Conduta definido pelo Covenant colaborador para esclarecer o comportamento esperado em nossa comunidade.
Para obter mais informações, consulte o Código de Conduta da Fundação .NET.
Se você usar o Anglesharp com frequência, mas não tiver tempo para apoiar o projeto por participação ativa, ainda poderá estar interessado em garantir que os projetos de Anglesharp mantenham as luzes acesas.
Portanto, criamos um modelo de apoio via BountySource. Qualquer doação é bem -vinda e muito apreciada. Gastaremos principalmente o dinheiro em tempo de desenvolvimento dedicado para melhorar o Anglesharp, onde ele precisa ser aprimorado, além de investir no ecossistema do utilitário da web no .NET (por exemplo, em motores JavaScript, outros analisadores ou um renderizador para Anglesharp mencionar alguns projetos destacados).
Visite Bountysource para mais detalhes.
Anglesharp é escrito na versão mais recente de C# e, portanto, requer Roslyn como compilador. Usando um IDE como o Visual Studio 2019+ é recomendado no Windows. Como alternativa, o VSCode (com o Omnisharp ou outra implementação de protocolo de servidor de idiomas adequado) deve ser a ferramenta de escolha em outras plataformas.
O código tenta ser o mais limpo possível. Notavelmente, as seguintes regras são usadas:
-Async quando disponíveisMais importante, no entanto, é o uso adequado dos testes. Qualquer novo recurso deve vir com um conjunto de testes para cobrir a funcionalidade e impedir a regressão.
Existe um changelog muito detalhado. Se você estiver interessado apenas nos principais lançamentos, dê uma olhada nos lançamentos do GitHub.
Este projeto é suportado pela fundação .NET.
Anglesharp é liberado usando a licença do MIT. Para mais informações, consulte o arquivo de licença.