2012-06-29 37 views
0

我想使用c#獲取網頁的HTML源代碼,就好像使用IE9,Chrome,Firefox等不同瀏覽器訪問過的一樣。有沒有辦法做到這一點?使用c#爲不同瀏覽器獲取網頁的HTML源代碼

+1

的HTML來自Web服務器,其提供相同的HTML到所有的瀏覽器(也有例外,但通常這是真的) 。這就是HTML的重點。 –

回答

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一個簡單的網絡爬蟲敏捷包)

+0

+1爲最好/最簡單.net網絡刮板HTML敏捷包! – xandercoded

+0

我喜歡它!讓生活變得簡單。 –

1

我不是C#專家,但是假設html不管哪個「瀏覽器」訪問url,都可以使用System.Net.WebClient(如果你只需要簡單控制)或HttpWebRequest (如果你需要更高級的控制)

對於Web客戶端,只需要創建一個實例,並調用它的一個下載*方法:

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

一些網站使用用戶代理嗅探來有時迎合閱讀他們網站的瀏覽器。特別是如果您將用戶代理設置爲IE4(yes,old),則某些ASP.NET用戶控件的呈現方式會有所不同,並且這會在網站作者直接干預的情況下自動完成。如果useragent包含單詞iPhone或Android,其他網站可能會重定向到移動網站 – Matthew

相關問題