我希望使用c#获取网页的HTML源代码,就像使用IE9,Chrome,Firefox等不同的浏览器访问它一样。有没有办法做到这一点?
答案 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");