none
C# - HtmlAgilityPack Help RRS feed

  • Pergunta

  • Prezados,

    Alguém tem algum material para ajudar, uma documentação em português de uso das suas funções?

    O material em inglês está muito difícil de entender.

    A ferramenta e muito boa, mas para quem esta iniciando tem muitas dificuldade como eu.

    Não estou sabendo pegar os dados em páginas com padrões diferentes do vídeo feito pelo Prof. André Secco: https://www.youtube.com/watch?v=tXGJMUY_pPc

    segunda-feira, 10 de outubro de 2016 14:10

Respostas

Todas as Respostas

  • Olá Walace,

    Por aqui fica bem mais fácil lhe ajudar, pode enviar qual é a página web que está querendo tirar a informação e qual informação deseja?


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

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

    • Marcado como Resposta Walace Calmon segunda-feira, 10 de outubro de 2016 15:03
    segunda-feira, 10 de outubro de 2016 14:18
  • André,

    Muito obrigado!

    O sistema consiste em fazer uma analise para saber o desempenho de equipes em vários esportes, de inicio foi separado o futebol.

    Para buscar os dados das equipes/pais: http://www.futbol24.com/Live/?__igp=1&liveAllGames=1

    Os dados que desejo são os TD: span: league alt, span: home, span: result 1, span: guest.

    Esse dados são guardados todos os dias em um banco, tem mais alguns sites, mas minha dúvida e saber usar a ferramenta.

    Osite não deixou colocar a imagem. Mas o id da table e f24com_tablelive.

    <div>varias acima

    <table id = "f24com_tablelive" class = "lay1">

    <tbody> <tr class = "Valor sempre muda" id = "valor único para cada tr>

    <td class = "league alt"></td>

    <span>Valor desejado por mim</span>

    <td class = "home"></td>

    <span>Valor desejado por mim</span>

    <td class = "result"></td>

    <span class = "result1">Valor desejado por mim</span>

    <td class = "guest"></td>

    <span>Valor desejado por mim</span>

    </tr>

    . . . . varios tr que vária no dia

    </tbody>

    <table>

    segunda-feira, 10 de outubro de 2016 16:10
  • Walace,

    Dei uma analisada no site e percebi que os dados não são carregados diretamente no HTML, dessa forma não é possível pegar os dados pelo HTML, porém analisei que existe uma requisição que trás os dados em XML.

    Portanto pegue os dados retornados em XML e leia-os para retirar seus dados.

    Segue a URL que retorna os dados em XML: http://www.futbol24.com/f24/u/liveNow_15.xml?_=1476117405132

    Pode colar no navegador para visualizar.

    Para ler esses dados XML, dê uma olhada nesses links:

    https://support.microsoft.com/pt-br/kb/307643

    http://www.macoratti.net/12/09/xml_cur3.htm

    https://support.microsoft.com/pt-br/kb/307548

    Valeu!


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

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

    • Marcado como Resposta Walace Calmon segunda-feira, 10 de outubro de 2016 17:48
    segunda-feira, 10 de outubro de 2016 16:47
  • André,

    Muito obrigado!

    Como você diferencia esse exemplo?

    Como vou saber essa diferença?

    Tem como explicar como chegaria neste conclusão?

    segunda-feira, 10 de outubro de 2016 17:49
  • Eu fiz o seguinte código e verifiquei se os dados estavam no html baixado:

    WebClient wc = new WebClient();
    WebProxy wp = new WebProxy();
    wc.Proxy = wp;
    
    string html = wc.DownloadString("URL_AQUI");

    Como observei que os dados não estavam no html, aí eu analisei as requisições do site (apertar F12 no firefox ou Chrome e ir na aba "Rede") e verifiquei que era aquela URL que te passei que trazia os resultados.

    Basicamente foi isso.

    Valeu!


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

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

    • Marcado como Resposta Walace Calmon segunda-feira, 10 de outubro de 2016 18:06
    segunda-feira, 10 de outubro de 2016 18:00
  • André,

    Muito obrigado!!!!

    Você me ajudou muito mesmo, se não for pedir muito depois de tudo que você fez.

    No futuro irei pedir ajuda no HtmlAgilityPack novamente, ainda tenho que aprender muito sobre ele tenho outros site no futuro para aprender a fazer o web scraping.

    segunda-feira, 10 de outubro de 2016 18:11
  • Sem problemas, manda a pergunta aqui no fórum que sempre estou de olho e tem outros profissionais que podem contribuir!

    Valeu!


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

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

    • Marcado como Resposta Walace Calmon segunda-feira, 10 de outubro de 2016 18:27
    segunda-feira, 10 de outubro de 2016 18:19
  • André,

    Boa tarde!

    Tenho esse código, o problema que a tag SPAN tem a mesma class de identificação.

    Tem como pegar a segunda class? <div class = "wrap_match>
     <span class = "team ">Time A</span>
     <span class = "result">0-0</span>
     <span class = "team ">Time B</span>
    </div>

    Eu estou conseguindo pegar os dados de outro site, esta muito bom.

    segunda-feira, 10 de outubro de 2016 19:38
  • Poste seu código de como está tentando fazer.

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

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

    • Marcado como Resposta Walace Calmon segunda-feira, 10 de outubro de 2016 20:19
    segunda-feira, 10 de outubro de 2016 20:09
  • André,

    Segue.

    Acima seria a mesma coisa que esta no seu vídeo.foreach (HtmlNode node in htmlDocment.GetElementbyId("thetable").ChildNodes)
                {
                    //Conta os childnodes da pagina e busca cada dado solicitado de acordo com sua indentificação
                    if (node.Attributes.Count > 0)
                    {
                        pcamp =  WebUtility.HtmlDecode(node.Descendants().First(x => x.Attributes["class"] != null && x.Attributes["class"].Value.Equals("comp")).InnerText.Replace("\n", "".Replace(" ", "")));
                        casa = WebUtility.HtmlDecode(node.Descendants().First(x => x.Attributes["class"] != null && x.Attributes["class"].Value.Equals("team ")).InnerText.Replace("\n", "".Replace(" ", "")));
                        visi = WebUtility.HtmlDecode(node.Descendants().First(x => x.Attributes["class"] != null && x.Attributes["class"].Value.Equals("team ")).InnerText);
                        placar = WebUtility.HtmlDecode(node.Descendants().First(x => x.Attributes["class"] != null && x.Attributes["class"].Value.Equals("odd fr mob")).InnerText);
                        Over1_5 = WebUtility.HtmlDecode(node.Descendants().First(x => x.Attributes["class"] != null && x.Attributes["class"].Value.Equals("perc bl ")).InnerText);

                        //Verifica se o titulo não esta nulo ou vazio, depois inseri os dados no datagrid
                        if (!string.IsNullOrEmpty(pcamp))
                        {
                            dataGridView1.Rows.Add(pcamp, casa, placar, visi, Over1_5);
                        }
                    }
                }

    segunda-feira, 10 de outubro de 2016 20:20
  • Walace,

    Tente alterar o visitante que para esse código (Usando o Last ao invés de First, afim de pegar o último elemento com aquela classe específica):

    visi = WebUtility.HtmlDecode(node.Descendants().Last(x => x.Attributes["class"] != null && x.Attributes["class"].Value.Equals("team ")).InnerText);


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

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

    • Marcado como Resposta Walace Calmon segunda-feira, 10 de outubro de 2016 20:35
    • Não Marcado como Resposta Walace Calmon segunda-feira, 10 de outubro de 2016 20:52
    segunda-feira, 10 de outubro de 2016 20:33
  • André,

    Muito obrigado!

    É justamente isso que estou falando, saber o que cada propriedade da ferramenta faz.

    Obrigado novamente!!!

    segunda-feira, 10 de outubro de 2016 20:53
  • André,

    Realmente desculpe mas não consigo pegar esses dados.

    Tem como me ajudar neste problema?

    Aqui tenho todos os dados rodada após rodada.

    segunda-feira, 17 de outubro de 2016 18:17
  • Walace, qual a sua dificuldade no código?

    OBS: Tente não marcar todos os meus comentários como reposta, apenas aquele que resolver seu problema


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

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

    segunda-feira, 17 de outubro de 2016 18:45