C#中一般是可以利用WebClient類和WebRequest類獲取網頁源代碼下面分別說明這兩種方法的實現
WebClient類獲取網頁源代碼
WebClient類
WebClient類位於SystemNet命名空間下WebClient類提供向URI標識的任何本地Intranet或Internet資源發送數據以及從這些資源接收數據的公共方法
源代碼
///引用命名空間
using SystemIO;
using SystemNet;
using SystemText;
PageUrl = webkaka; //需要獲取源代碼的網頁
WebClient wc = new WebClient(); // 創建WebClient實例提供向URI 標識的資源發送數據和從URI 標識的資源接收數據
wcCredentials = CredentialCacheDefaultCredentials; // 獲取或設置用於對向 Internet 資源的請求進行身份驗證的網絡憑據
///方法一
Encoding enc = EncodingGetEncoding(GB); // 如果是亂碼就改成 utf / GB
Byte[] pageData = wcDownloadData(PageUrl); // 從資源下載數據並返回字節數組
ContentHtmlText = encGetString(pageData); // 輸出字符串(HTML代碼)ContentHtml為Multiline模式的TextBox控件
/// 方法二
/// ***************代碼開始**********
/// Stream resStream = wcOpenRead(PageUrl); //以流的形式打開URL
/// Encoding enc = EncodingGetEncoding(GB); // 如果是亂碼就改成 utf / GB
/// StreamReader sr = new StreamReader(resStreamenc); //以指定的編碼方式讀取數據流
/// ContentHtmlText = srReadToEnd(); //輸出(HTML代碼)ContentHtml為Multiline模式的TextBox控件
/// resStreamClose();
/// **************代碼結束********
///
wcDispose();
WebRequest類獲取網頁源代碼
WebRequest類
WebRequest類是NET Framework中請求/響應模型的abstract基類用於訪問Internet數據使用WebRequest類請求/響應模型的應用程序可以用協議不可知的方式從Internet請求數據在這種方式下應用程序處理WebRequest類的實例而協議特定的子類則執行請求的具體細節請求從應用程序發送到某個特定的URI如服務器上的網頁URI從一個為應用程序注冊的WebRequest子類列表中確定要創建的適當子類注冊WebRequest子類通常是為了處理某個特定的協議(如HTTP或FTP)但是也可以注冊它以處理對特定服務器或服務器上的路徑的請求
WebRequest類中最常用的是Create方法Create方法用於為指定的URI方案初始化新的WebRequest實例
語法
public static WebRequest Create
(
string requestUriString
)
參數
requestUriString標識Internet資源的URI
返回值特定URI方案的WebRequest子類
注意Create方法將運行時確定的WebRequest類的子類作為與requestUri最接近的注冊匹配項返回例如當//開頭的URI在requestUri中傳遞時由Create返回一個HttpWebRequest如果改為傳遞以file://開頭的URI則Create方法將返回FileWebRequest實例NET Framework包括//和file:// URI方案的支持
WebResponse類
WebResponse類是abstract基類協議特定的響應類從該抽象基類派生應用程序可以使用 WebResponse類的實例以協議不可知的方式參與請求和響應事務而從WebResponse類派生的協議特定的類攜帶請求的詳細信息
在WebResponse類中最常用的是GetResponse方法GetResponse方法用於當在子類中被重寫時返回對 Internet 請求的響應
語法
public virtual WebResponse GetResponse ()
返回值包含對Internet請求的響應的WebResponse
源代碼
///引用命名空間
using SystemIO;
using SystemNet;
using SystemText;
PageUrl = ; //需要獲取源代碼的網頁
WebRequest request = WebRequestCreate(PageUrl); //WebRequestCreate方法返回WebRequest的子類HttpWebRequest
WebResponse response = requestGetResponse(); //WebRequestGetResponse方法返回對 Internet 請求的響應
Stream resStream = responseGetResponseStream(); //WebResponseGetResponseStream 方法從 Internet 資源返回數據流
Encoding enc = EncodingGetEncoding(GB); // 如果是亂碼就改成 utf / GB
StreamReader sr = new StreamReader(resStream enc); //命名空間:SystemIO StreamReader 類實現一個 TextReader (TextReader類表示可讀取連續字符系列的讀取器)使其以一種特定的編碼從字節流中讀取字符
ContentHtmlText = srReadToEnd(); //輸出(HTML代碼)ContentHtml為Multiline模式的TextBox控件
resStreamClose();
srClose();
From:http://tw.wingwit.com/Article/program/net/201311/13576.html