如何使用ASP.NET获取网页的内容?我需要编写一个程序来获取网页的HTML并将其存储到字符串变量中。
如何使用ASP.NET获取网页的内容?我需要编写一个程序来获取网页的HTML并将其存储到字符串变量中。
Answers:
您可以使用WebClient
Using System.Net;
WebClient client = new WebClient();
string downloadString = client.DownloadString("http://www.gooogle.com");
我以前遇到过Webclient.Downloadstring的问题。如果这样做,则可以尝试以下操作:
WebRequest request = WebRequest.Create("http://www.google.com");
WebResponse response = request.GetResponse();
Stream data = response.GetResponseStream();
string html = String.Empty;
using (StreamReader sr = new StreamReader(data))
{
html = sr.ReadToEnd();
}
我建议不要使用WebClient.DownloadString
。这是因为(至少在.NET 3.5中)DownloadString不够灵巧,无法使用/删除BOM(如果存在)。这可能导致
返回UTF-8数据时,BOM()错误地显示为字符串的一部分(至少没有字符集)-!
取而代之的是,此细微变化将与BOM一起正常使用:
string ReadTextFromUrl(string url) {
// WebClient is still convenient
// Assume UTF8, but detect BOM - could also honor response charset I suppose
using (var client = new WebClient())
using (var stream = client.OpenRead(url))
using (var textReader = new StreamReader(stream, Encoding.UTF8, true)) {
return textReader.ReadToEnd();
}
}