none
pegar parte de um html RRS feed

  • Pergunta

  • pessoal..

    tenho um html, gostaria de pegar um pedaço dele (exemplo, uma determinada div) e utilizar ela pra montar um outro HTML.. consigo fazer isso em asp.net?

    quarta-feira, 27 de fevereiro de 2013 19:57

Todas as Respostas

  • Você pode usar um o HtmlAgilityPack, apontar para qual arquivo ou URL do site você quer pegar usando de XPath

    using System;
    using System.Linq;
    using HtmlAgilityPack;
    
    namespace ConsoleApplication4
    {
        class Program
        {
            static void Main(string[] args)
            {
                using (System.Net.WebClient client = new System.Net.WebClient())
                {
                    //Recuperando pagina Web, apenas 'string'
                    string contents = client.DownloadString("http://vitormendes.com.br/2013/02/20/tratamentos-a-nivel-de-aplicacao/");
    
                    //Instancia HtmlAgilityPack
                    HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
    
                    //Carregando HTML
                    doc.LoadHtml(contents);
    
                    //Recuperando apenas elemento aonde possui conteudo da postagem
                    HtmlNode node = doc.DocumentNode.SelectNodes("//article").FirstOrDefault();
                    if (node != null)
                    {
                        Console.WriteLine(node.InnerHtml);
                    }
                    else
                    {
                        Console.WriteLine("Não achei o artigo :(");
                    }
                }
    
            }
        }
    }
    

    Download do componente:
    http://htmlagilitypack.codeplex.com/

    Vitor Mendes | Seu feedback é muito importante para todos!
    Visite o meu site: http://www.vitormendes.com.br/

    • Sugerido como Resposta Murilo Kunze quarta-feira, 27 de fevereiro de 2013 20:20
    quarta-feira, 27 de fevereiro de 2013 20:14
  • esse HtmlAgilityPack eu tenho que baixar ou é nativo do VS?

    pois tenho isso:

                Using wc As New WebClient()
                    wc.Encoding = System.Text.Encoding.UTF8
                    testeStr = wc.DownloadString(teste)
                End Using

    as vezes era só adaptar ao seu..


    outra coisa.. ela é pra c#? preciso pra vb.net, se tiver que baixar, pode me dizer onde acho?
    • Editado kngipa quarta-feira, 27 de fevereiro de 2013 20:31
    quarta-feira, 27 de fevereiro de 2013 20:20
  • HtmlAgilityPack você tem que baixar e referenciar no seu projeto.

    O solução que você citou acima, até funcionaria, porem você teria todo o trabalho de remover os nós HTML, metadados e etc, para conseguir formalizar este seu HTML e usar para os possíveis "selects" neste XHTML, o HtmlAgilityPack  faz todo o trabalho, veja como ficaria em VB.NET:

    using (System.Net.WebClient client = new System.Net.WebClient())
    {
    
        client.Encoding = Encoding.UTF8;
    
        //Recuperando pagina Web, apenas 'string'
        string contents = client.DownloadString("http://vitormendes.com.br/2013/02/20/tratamentos-a-nivel-de-aplicacao/");
    
        //Instancia HtmlAgilityPack
        HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
    
        //Carregando HTML
        doc.LoadHtml(contents);
    
        //Recuperando apenas elemento aonde possui conteudo da postagem
        HtmlAgilityPack.HtmlNode node = doc.DocumentNode.SelectNodes("//article").FirstOrDefault();
        if (node != null)
        {
            Console.WriteLine(node.InnerHtml);
        }
        else
        {
            Console.WriteLine("Não achei o artigo :(");
        }
    }

    Download do componente:
    http://htmlagilitypack.codeplex.com/


    Vitor Mendes | Seu feedback é muito importante para todos!
    Visite o meu site: http://www.vitormendes.com.br/

    quinta-feira, 28 de fevereiro de 2013 00:08
  • Kryla,

    Me desculpa, agora que notei que tinha postado novamente o código em C#, segue abaixo em VB.NET:

    Using client As New System.Net.WebClient()
    
    	client.Encoding = Encoding.UTF8
    
    	'Recuperando pagina Web, apenas 'string'
    	Dim contents As String = client.DownloadString("http://vitormendes.com.br/2013/02/20/tratamentos-a-nivel-de-aplicacao/")
    
    	'Instancia HtmlAgilityPack
    	Dim doc As New HtmlAgilityPack.HtmlDocument()
    
    	'Carregando HTML
    	doc.LoadHtml(contents)
    
    	'Recuperando apenas elemento aonde possui conteudo da postagem
    	Dim node As HtmlAgilityPack.HtmlNode = doc.DocumentNode.SelectNodes("//article").FirstOrDefault()
    	If node IsNot Nothing Then
    		Console.WriteLine(node.InnerHtml)
    	Else
    		Console.WriteLine("Não achei o artigo :(")
    	End If
    End Using
    


    Vitor Mendes | Seu feedback é muito importante para todos!
    Visite o meu site: http://www.vitormendes.com.br/

    quinta-feira, 28 de fevereiro de 2013 13:29