使用c#为不同的浏览器获取网页的HTML源代码

时间:2012-06-29 03:08:49

标签: c# html

我希望使用c#获取网页的HTML源代码,就像使用IE9,Chrome,Firefox等不同的浏览器访问它一样。有没有办法做到这一点?

2 个答案:

答案 0 :(得分:2)

您可以通过多种方式获取HTML源代码。我首选的方法是HTML Agility Pack

HtmlDocument doc = new HtmlDocument();
doc.Load("http://domain.com/resource/page.html");
doc.Save("file.htm");

.NET中的WebClient效果也很好。

WebClient myWebClient = new WebClient();
myWebClient.Headers.Add ("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.0.3705;)"); // If you need to simulate a specific browser
byte[] myDataBuffer = myWebClient.DownloadData (remoteUri);
string download = Encoding.ASCII.GetString(myDataBuffer);
// This is verbatim from MSDN... unfortunately their example does not dispose
// of myWebClient (it implements IDisposable).  You should wrap use of a WebClient
// in a using statement.

http://msdn.microsoft.com/en-us/library/xz398a3f.aspx

你得到的HTML就是你得到的。给定的浏览器决定如何制作它(除非,即服务器为不同的用户代理呈现不同的HTML)。

如果您确实需要明确设置用户代理(以模拟不同的浏览器),以下帖子将说明如何执行此操作:

http://blog.abodit.com/2010/03/a-simple-web-crawler-in-c-using-htmlagilitypack/

(此链接还使用HTML Agility Pack实现了一个简单的Web爬网程序)

答案 1 :(得分:1)

我不是C#专家,但假设无论哪个“浏览器”访问网址,html都是一样的,你可以使用System.Net.WebClient(如果你只需要简单的控制)或HttpWebRequest(如果你需要)更先进的控制)

对于WebClient,只需创建一个实例并调用其中一个Download *方法:

var cli = new WebClient();
string data = cli.DownloadString("http://www.stackoverflow.com");