none
[UWP][C#] Obter dados de uma pagina da web RRS feed

  • Pergunta

  • Olá pessoal, gostaria de saber se é possível obter dados de uma página da web? Por exemplo: Obter os números das loterias no site da Caixa, obter o número e a data do sorteio, etc..

    terça-feira, 14 de fevereiro de 2017 17:18

Respostas

  • Sim isso se chama WebCrawler,WebScrapping ,ou "robô de captura de dados" procure por esse terno na Net que você acha muito conteudo, mais tudo isso exigira conhecimento

    GTSA vantagem de ser inteligente é que podemos fingir que somos imbecis enquanto ao contrario é completamente impossivel



    terça-feira, 14 de fevereiro de 2017 20:31
  • Olá Franklin

    Esse tema é muito procuraso e por esse motivo fiz uma live no canal, falando e mostrando como implementar a técnica de web scraping com C#. Dá uma olhada, irá te ajudar: https://www.youtube.com/watch?v=tXGJMUY_pPc

    Valeu!


    Se a resposta for relevante ou tenha resolvido seu problema, marque como útil/resposta!

    André Secco
    Microsoft MVP & MSDN Tech Advisor
    Blog: http://andresecco.com.br
    GitHub: http://github.com/andreluizsecco
    Twitter: @andre_secco

    terça-feira, 14 de fevereiro de 2017 20:37
  • Eu achei um tutorial bem bacana no site do NetCoders nesse link.

    Segue o trecho de código que usei para obter os números:

    var numbersnode = document.DocumentNode.Descendants().Where(n => n.Name == "ul").OrderBy(d => d.Id).ToList();
    
    foreach (var item in numbersnode)
                    {
                        if (item.Attributes.Count > 0)
                        {
                            if (item.Attributes["class"] != null && item.Attributes["class"].Value == "numbers mega-sena")
                            {
                                var numbers = item.Descendants().Where(n => n.Name == "li").OrderBy(d => d.InnerText).ToList();
                                if (null != numbers)
                                {
                                    foreach (var number in numbers)
                                    {
                                        UpdateLabel(number.InnerText, false);
                                    }
                                }
                            }
                        }
                    }

    Obrigado a todos pela atenção e ajuda, foi muito útil, abraços!
    sexta-feira, 17 de fevereiro de 2017 15:32

Todas as Respostas

  • Sim isso se chama WebCrawler,WebScrapping ,ou "robô de captura de dados" procure por esse terno na Net que você acha muito conteudo, mais tudo isso exigira conhecimento

    GTSA vantagem de ser inteligente é que podemos fingir que somos imbecis enquanto ao contrario é completamente impossivel



    terça-feira, 14 de fevereiro de 2017 20:31
  • Olá Franklin

    Esse tema é muito procuraso e por esse motivo fiz uma live no canal, falando e mostrando como implementar a técnica de web scraping com C#. Dá uma olhada, irá te ajudar: https://www.youtube.com/watch?v=tXGJMUY_pPc

    Valeu!


    Se a resposta for relevante ou tenha resolvido seu problema, marque como útil/resposta!

    André Secco
    Microsoft MVP & MSDN Tech Advisor
    Blog: http://andresecco.com.br
    GitHub: http://github.com/andreluizsecco
    Twitter: @andre_secco

    terça-feira, 14 de fevereiro de 2017 20:37
  • Valeu André Secco e Mr. GMSOFT era isso mesmo. Eu assisti seu vídeo André Secco e consegui o mesmo resultado em UWP para o site do MSDN. Porém não estou conseguindo coletar informações de outras paginas. Por exemplo do site das loterias da Caixa.

    Eu estou usando um trecho do código exemplo do seu vídeo para obter o texto "Acumulou":

    foreach (var node in document.GetElementbyId("resultados").ChildNodes)
                    {
                        if (node.Attributes.Count > 0)
                        {
                            string s = node.Descendants().First(x => x.Attributes["class"] != null && x.Attributes["class"].Value.Equals("epsilon")).InnerText;
                            UpdateLabel(s, false);
                        }
                    }

    Não sei o que está errado. Mas retorna o seguinte erro: "Sequence contains no matching element".

    Se puder dar uma força agradeço.


    quinta-feira, 16 de fevereiro de 2017 22:01
  • Debug o seu node no foreach e veja se realmente ela traz o elemento que procura

    GTSA vantagem de ser inteligente é que podemos fingir que somos imbecis enquanto ao contrario é completamente impossivel

    sexta-feira, 17 de fevereiro de 2017 06:27
  • Eu achei um tutorial bem bacana no site do NetCoders nesse link.

    Segue o trecho de código que usei para obter os números:

    var numbersnode = document.DocumentNode.Descendants().Where(n => n.Name == "ul").OrderBy(d => d.Id).ToList();
    
    foreach (var item in numbersnode)
                    {
                        if (item.Attributes.Count > 0)
                        {
                            if (item.Attributes["class"] != null && item.Attributes["class"].Value == "numbers mega-sena")
                            {
                                var numbers = item.Descendants().Where(n => n.Name == "li").OrderBy(d => d.InnerText).ToList();
                                if (null != numbers)
                                {
                                    foreach (var number in numbers)
                                    {
                                        UpdateLabel(number.InnerText, false);
                                    }
                                }
                            }
                        }
                    }

    Obrigado a todos pela atenção e ajuda, foi muito útil, abraços!
    sexta-feira, 17 de fevereiro de 2017 15:32