C# 擷取網頁內容[方法一]

來源:互聯網
上載者:User
關鍵詞: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 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.