Você está na página 1de 3

Baixando contedo de uma determinada URL

Categoria: .NET

Como baixar o contedo de uma determinada pgina HTML em uma determinada URL e manipul-lo? O cdigo abaixo faz o download atravs de um stream do contedo de uma determinada URL e obtm o cdigo fonte do arquivo especificado renderizado em HTML. Baixando arquivos da internet de forma automtica:

01 using System; 02 using System.Collections.Generic; 03 using System.Linq; 04 using System.Text; 05 using System.Net; 06 using System.IO; 07 using System.Configuration; 08 09 namespace Downloads 10 { 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 /// <summary> } return result; string result = sb.ToString(); iTotalBuffer = ProcessaStreamReader(buffer, st, sb, iTotalBuffer); int iTotalBuffer = 0; CarregaObjetos(u, out buffer, out st, out sb); internal class URL { /// <summary> /// Obtem o conteudo de um arquivo na web /// </summary> /// Url a ser processada /// <returns>Contedo do arquivo</returns> public string ObterConteudo(string u) { byte[] buffer; Stream st; StringBuilder sb;

36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59

/// Instancia os objetos /// </summary> /// Url a ser processada /// Objeto de buffer /// Objeto de stream /// Objeto de stringbuilder private static void CarregaObjetos(string u, out byte[] buffer, outStream st, out StringBuilder sb) { WebRequest wr = WebRequest.Create(u); WebResponse wrp = wr.GetResponse(); buffer = new byte[128]; st = wrp.GetResponseStream(); sb = new StringBuilder(); } /// <summary> /// Processa o stream reader /// </summary> /// Objeto de buffer /// Objeto de stream /// Objeto de stringbuilder /// Contador de processos do buffer /// Quantidade de processos do buffer

private static int ProcessaStreamReader(byte[] buffer, Stream st, StringBuilder sb, int iTotalBuffer) 60 { 61 62 63 64 65 66 67 68 69 70 71 72 } } } return iTotalBuffer; } while ((iTotalBuffer != 0)) { sb.Append(Encoding.ASCII.GetString(buffer, 0, iTotalBuffer)); iTotalBuffer = st.Read(buffer, 0, 128); iTotalBuffer = st.Read(buffer, 0, 128);

Fazendo a chamada do mtodo e obtendo o contedo em uma string em um console application:

01 using System; 02 using System.Collections.Generic;

03 using System.Linq; 04 using System.IO; 05 using System.Text; 06 using System.Net; 07 08 namespace Downloads 09 { 10 11 12 13 14 15 16 17 18 19 } class Program { static void Main(string[] args) { var downloads = new Downloads(); // instancia a classe string url = "http://www.mauricio-luis.com/blog"; // url a ser baixada string conteudoObtido = downloads.ObterConteudo(url); // obtm o contedo HTML em uma string } }

Você também pode gostar