使用 WebClient 把目標 URL 另存為 HTML

  • 4207
  • 0
  • 2011-12-08

想要把某個網址存為HTML,我們可以使用WebClient。


想要把某個網址存為HTML,我們可以使用WebClient。
第一個找到的方法:


string url = "http://www.google.com";
string fileName = "Download.html";

WebClient client = new WebClient();
Byte[] htmlData = client.DownloadData(url);
string html = Encoding.UTF8.GetString(htmlData);
StreamWriter sw = new StreamWriter(fileName);
sw.Write(html);
sw.Close();

編碼設定透過Encoding.UTF8.GetString方法來把byte型態的陣列轉換為UTF8編碼的String。 

另一種方法:


client.Encoding = Encoding.UTF8; 
string html = client.DownloadString(url); 


client.Encoding設定的是WebClient上傳和下載的String編碼設定。

後來發現還有最短的,不用再另外用StreamWriter存成html:


client.DownloadFile(url, fileName); 

使用WebReguest、HttpWebResponse:


WebRequest request = WebRequest.Create(url);
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Stream dataStream = response.GetResponseStream();
StreamReader reader = new StreamReader(dataStream);
string html = reader.ReadToEnd();
reader.Close();
dataStream.Close();
response.Close();

雖然比較繁複,不過相對的使用WebReguest、HttpWebResponse可以設定比較多參數(Ex:Timeout),也可以看到完整的流程:對一個URL送出request,把response存為HTML。


參考資料:
[MSDN]WebClient Constructor
[MSDN]WebRequest Class
The Will Will Web | 利用 WebClient 類別模擬 HTTP POST 表單送出的注意事項