C#:
Analisando HTML
Como Fazer:
Embora o .NET forneça suporte básico para trabalhar com HTML, como o HttpClient
para buscar páginas web, ele carece de um analisador HTML abrangente e integrado. Portanto, a maioria dos desenvolvedores C# recorre a bibliotecas de terceiros populares como HtmlAgilityPack ou AngleSharp para capacidades robustas de análise HTML. Ambas as bibliotecas permitem fácil consulta, manipulação e travessia do DOM HTML.
Usando HtmlAgilityPack
Instale o HtmlAgilityPack: Primeiro, adicione o pacote HtmlAgilityPack ao seu projeto via NuGet.
Install-Package HtmlAgilityPack
Código de Exemplo: Analise uma string HTML e extraia os títulos de todos os elementos
<h1>
.using HtmlAgilityPack; using System; using System.Linq; class Program { static void Main(string[] args) { var html = @"<html> <body> <h1>Título 1</h1> <h1>Título 2</h1> </body> </html>"; var htmlDoc = new HtmlDocument(); htmlDoc.LoadHtml(html); var h1Tags = htmlDoc.DocumentNode.SelectNodes("//h1").Select(node => node.InnerText); foreach (var title in h1Tags) { Console.WriteLine(title); } } }
Saída de Exemplo:
Título 1 Título 2
Usando AngleSharp
Instale o AngleSharp: Adicione a biblioteca AngleSharp ao seu projeto via NuGet.
Install-Package AngleSharp
Código de Exemplo: Carregue um documento HTML e consulte elementos
div
com uma classe específica.using AngleSharp; using AngleSharp.Dom; using System; using System.Linq; using System.Threading.Tasks; class Program { static async Task Main(string[] args) { var context = BrowsingContext.New(Configuration.Default); var document = await context.OpenAsync(req => req.Content("<div class='item'>Item 1</div><div class='item'>Item 2</div>")); var items = document.QuerySelectorAll(".item").Select(element => element.TextContent); foreach (var item in items) { Console.WriteLine(item); } } }
Saída de Exemplo:
Item 1 Item 2
Tanto o HTMLAgilityPack quanto o AngleSharp são ferramentas poderosas para analisar HTML, mas sua escolha entre eles pode depender de requisitos específicos do projeto, considerações de desempenho ou preferência pessoal no design da API.