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

4 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!

Deixe uma resposta

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