23 05 2018
Processando HTML para pegar informações de controles no .NET
No meu último vídeo eu mostrei para você como ler o conteúdo HTML de uma URL. Mas, como é que nós podemos ir além disso? Existe uma maneira de analisarmos os dados de um documento HTML para recuperarmos informações específicas dentro dele? Sim! Essa atividade é chamada de web scraping, e pode ser realizada no .NET através de uma biblioteca muito simples, chamada HTML Agility Pack.
Hoje eu mostro para você como utilizar essa biblioteca para processarmos HTML e pegarmos informações dentro dele. Veja só:
// C# Console.WriteLine("Artigos:"); var doc = new HtmlWeb().Load("http://www.andrealveslima.com.br/blog"); var artigos = doc.DocumentNode.SelectNodes("//article/div/h2"); foreach (var artigo in artigos) { Console.WriteLine(artigo.InnerText); } Console.WriteLine(); Console.WriteLine("Temas:"); var temas = doc.DocumentNode.Descendants().Where(d => d.Attributes.Contains("class") && d.Attributes["class"].Value.Contains("div_only_answer")); foreach (var tema in temas) { Console.WriteLine(tema.InnerText); } Console.ReadLine();
' VB.NET Console.WriteLine("Artigos:") Dim Doc = New HtmlWeb().Load("http://www.andrealveslima.com.br/blog") Dim Artigos = Doc.DocumentNode.SelectNodes("//article/div/h2") For Each Artigo In Artigos Console.WriteLine(Artigo.InnerText) Next Console.WriteLine() Console.WriteLine("Temas:") Dim Temas = Doc.DocumentNode.Descendants().Where(Function(d) d.Attributes.Contains("class") AndAlso d.Attributes("class").Value.Contains("div_only_answer")) For Each Tema In Temas Console.WriteLine(Tema.InnerText) Next Console.ReadLine()
Baixe o projeto de exemplo
Para baixar o projeto de exemplo desse artigo, assine a minha newsletter. Ao fazer isso, além de ter acesso ao projeto, você receberá um e-mail toda semana sobre o artigo publicado e ficará sabendo também em primeira mão sobre o artigo da próxima semana, além de receber dicas “bônus” que eu só compartilho por e-mail. Inscreva-se utilizando o formulário no final do artigo.
Até a próxima!
André Lima
Image by Pexels, Pixabay used under Creative Commons
https://pixabay.com/en/code-code-editor-coding-computer-1839406/
Song Motherlode Kevin MacLeod (incompetech.com)
Licensed under Creative Commons: By Attribution 3.0 License
http://creativecommons.org/licenses/by/3.0/
Lendo o conteúdo HTML de uma URL no .NET Utilizando uma biblioteca .NET Standard com Windows Forms e WPF
André, parabéns pelo post! Gostaria de saber como faço para ler o conteúdo de um site que usa recaptcha.
Agradeço sua atenção!
Olá Ademi, obrigado pelo comentário..
A ideia do recaptcha é exatamente previnir que pessoas façam isso que você está querendo fazer.. Ou seja, se a pessoa (ou empresa) colocou recaptcha no site, ela quer evitar que robôs ou aplicações peguem os dados da página.. Somente pessoas que resolvam o recaptcha podem acessar o conteúdo..
Eu já ouvi falar de algumas bibliotecas que tentam quebrar recaptcha, mas eu não tenho experiência com isso.. Vou ficar te devendo.. :(
Abraço!
André Lima
Muito bom, André!
Aprovado, funciona muito bem.
Só de existir um recurso que pega o que está entre as tags HTML torna muito vantajoso.
Obrigado e abraços!
Legal, Murilo! Obrigado pelo comentário.. Fico feliz que você tenha gostado..
Abraço!
André Lima
Parabéns Andre, muito bacana este post. Gostaria de saber se voce conhece ou sabe onde posso conseguir um direcionamento para montar uma aplicação em asp.net para busca de preços de determinado produto. Algo parecido com o buscapé, bondifaro esses sites de busca. Abraço
Olá Antonio, obrigado pelo comentário!
Nunca fiz nada desse tipo e acredito que não seja uma tarefa fácil.. Basicamente você tem duas opções.. Ou você tenta encontrar web services dos sites que você quer consultar os preços (se tiver disponível) ou você terá que fazer uma busca em segundo plano e fazer o parse do HTML retornado, o que seria extremamente difícil, pois os layouts dos sites são alterados frequentemente..
Abraço!
André Lima
muito bom
Muito obrigado pelo comentário, Antonio.. :)
Abraço!
André Lima