André Alves de Lima

Talking about Software Development and more…

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/

Newsletter do André Lima

* indicates required



Powered by MailChimp

8 thoughts on “Processando HTML para pegar informações de controles no .NET

  • Ademi Vieira disse:

    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!

    • andrealveslima disse:

      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

  • Murilo Fujita disse:

    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!

  • Antonio Marinho disse:

    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

    • andrealveslima disse:

      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

  • Antonio Marinho disse:

    muito bom

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *