關鍵詞:System.Net.HttpWebRequest;System.Net.HttpWebResponse;System.IO.Stream;System.IO.StreamReader;System.IO.FileStream.....
通過C#程式來擷取訪問頁面的內容(網頁原始碼)並實現將內容儲存到原生檔案中。方法一是通過System.Net的兩個關鍵的類System.Net.HttpWebRequest;System.Net.HttpWebResponse來實現的具體代碼如下: 1 HttpWebRequest httpReq;
2 HttpWebResponse httpResp;
3
4 string strBuff = "";
5 char[] cbuffer = new char[256];
6 int byteRead = 0;
7
8 string filename = @"c:\log.txt";
9 ///定義寫入流操作
10 public void WriteStream()
11 {
12 Uri httpURL = new Uri(txtURL.Text); ///HttpWebRequest類繼承於WebRequest,並沒有自己的建構函式,需通過WebRequest的Creat方法 建立,並進行強制的類型轉換
13 httpReq = (HttpWebRequest)WebRequest.Create(httpURL);
14 ///通過HttpWebRequest的GetResponse()方法建立HttpWebResponse,強制類型轉換 httpResp = (HttpWebResponse) httpReq.GetResponse();
15 ///GetResponseStream()方法擷取HTTP響應的資料流,並嘗試取得URL中所指定的網頁內容 ///若成功取得網頁的內容,則以System.IO.Stream形式返回,若失敗則產生ProtoclViolationException錯 誤。在此正確的做法應將以下的代碼放到一個try塊中處理。這裡簡單處理
16 Stream respStream = httpResp.GetResponseStream(); ///返回的內容是Stream形式的,所以可以利用StreamReader類擷取GetResponseStream的內容,並以 StreamReader類的Read方法依次讀取網頁來源程式代碼每一行的內容,直至行尾(讀取的編碼格式:UTF8)
17 StreamReader respStreamReader = new StreamReader(respStream,Encoding.UTF8);
18
19 byteRead = respStreamReader.Read(cbuffer,0,256);
20
21 while (byteRead != 0)
22 {
23 string strResp = new string(cbuffer,0,byteRead);
24 strBuff = strBuff + strResp;
25 byteRead = respStreamReader.Read(cbuffer,0,256);
26 }
27
28 respStream.Close();
29 txtHTML.Text = strBuff;
30 }
31 ///定義寫入檔案操作
32 public void WriteFile()
33 { ///要將結果儲存至檔案中,可利用FileStream類建立檔案資料流,並以Write方法將HTML內容寫入到檔案
34 FileStream fileStream = new FileStream(filename,FileMode.OpenOrCreate,FileAccess.Write);
35 byte[] byteSave = Encoding.UTF8.GetBytes(txtHTML.Text.ToString()); ///儲存為txt檔案時編 碼方式為UTF8
36
37 fileStream.Write(byteSave,0,byteSave.Length);
38 fileStream.Close();
39 }
40
41 private void btnwrite_Click(object sender, EventArgs e)
42 {
43 WriteStream();
44 WriteFile();
45 }
46