Como posso baixar fonte HTML em c #

Como posso obter a fonte HTML dado um endereço da web em c #?

Você pode baixar arquivos com a class WebClient :

using System.Net; using (WebClient client = new WebClient ()) // WebClient class inherits IDisposable { client.DownloadFile("http://yoursite.com/page.html", @"C:\localfile.html"); // Or you can get the file content without saving it string htmlCode = client.DownloadString("http://yoursite.com/page.html"); } 

basicamente:

 using System.Net; using System.Net.Http; // in LINQPad, also add a reference to System.Net.Http.dll WebRequest req = HttpWebRequest.Create("http://google.com"); req.Method = "GET"; string source; using (StreamReader reader = new StreamReader(req.GetResponse().GetResponseStream())) { source = reader.ReadToEnd(); } Console.WriteLine(source); 

Você pode obtê-lo com:

 var html = new System.Net.WebClient().DownloadString(siteUrl) 

Este post é realmente antigo (tem 7 anos quando eu estou respondendo), então nenhuma das outras soluções usou a nova e recomendada forma, que é a class HttpClient .

HttpClient é considerado novo API e deve replace o antigo WebClient e WebRequest

 string url = "page url"; using (HttpClient client = new HttpClient()) { using (HttpResponseMessage response = client.GetAsync(url).Result) { using (HttpContent content = response.Content) { string result = content.ReadAsStringAsync().Result; } } } 

Para obter mais informações sobre como usar a class HttpClient (especialmente em casos asynchronous), você pode consultar essa pergunta

O caminho do @cms é o mais recente, sugerido no site da MS, mas tive um problema difícil de resolver, com os dois methods postados aqui, agora eu posto a solução para todos!

problema: se você usar um URL como este: www.somesite.it/?p=1500 em alguns casos você recebe um erro interno do servidor (500), embora no navegador da web este www.somesite.it/?p=1500 funcione perfeitamente .

solução: você tem que sair parâmetros (sim é fácil), código de trabalho é:

 using System.Net; //... using (WebClient client = new WebClient ()) { client.QueryString.Add("p", "1500"); //add parameters string htmlCode = client.DownloadString("www.somesite.it"); //... } 

aqui documentação oficial