如何在C#中下载HTML源代码

我怎样才能获得在C#中的url的HTML源代码?

您可以使用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"); //... } 

基本上:

 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); 

你可以得到它:

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

“cms”方式是最近在ms网站上build议的

但我有一个难以解决的问题,在这里张贴宽度两个方法

现在我为所有人发布解决scheme!

问题:如果你使用这样的url:“www.somesite.it/?p=1500”在某些情况下,你会得到一个内部的服务器错误(500),虽然在networking浏览器这个“www.somesite.it/?p=1500 “完美的工作。

解决scheme:你必须移出参数(是的很容易),工作代码是:

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

这里官方文档: http : //msdn.microsoft.com/en-us/library/system.net.webclient.querystring.aspx

这个post真的很老了(我回答时已经7岁了),所以没有其他的解决scheme使用新的和推荐的方式,这是HttpClient类。

HttpClient被认为是新的API,它应该replace旧的WebClientWebRequest

 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; } } } 

有关如何使用HttpClient类(特别是在asynchronous情况下)的更多信息,您可以参考此问题