日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > C# >内容正文

C#

c#利用WebClient和WebRequest获取网页源代码的比较

發布時間:2025/7/25 C# 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c#利用WebClient和WebRequest获取网页源代码的比较 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?前幾天舉例分析了用asp+xmlhttp獲取網頁源代碼的方法,但c#中一般是可以利用WebClient類和WebRequest類獲取網頁源代碼。下面分別說明這兩種方法的實現。

WebClient類獲取網頁源代碼

WebClient類

  WebClient類位于System.Net命名空間下,WebClient類提供向URI標識的任何本地、Intranet或Internet資源發送數據以及從這些資源接收數據的公共方法。

源代碼

///引用命名空間
using System.IO;
using System.Net;
using System.Text;


PageUrl = "http://www.webkaka.com"; //需要獲取源代碼的網頁
WebClient wc = new WebClient(); // 創建WebClient實例提供向URI 標識的資源發送數據和從URI 標識的資源接收數據
wc.Credentials = CredentialCache.DefaultCredentials; // 獲取或設置用于對向 Internet 資源的請求進行身份驗證的網絡憑據。

///方法一:
Encoding enc = Encoding.GetEncoding("GB2312"); // 如果是亂碼就改成 utf-8 / GB2312
Byte[] pageData = wc.DownloadData(PageUrl); // 從資源下載數據并返回字節數組。
ContentHtml.Text = enc.GetString(pageData); // 輸出字符串(HTML代碼),ContentHtml為Multiline模式的TextBox控件
???
/// 方法二:
/// ***************代碼開始**********
/// Stream resStream = wc.OpenRead(PageUrl); //以流的形式打開URL
/// Encoding enc = Encoding.GetEncoding("GB2312"); // 如果是亂碼就改成 utf-8 / GB2312
/// StreamReader sr = new StreamReader(resStream,enc); //以指定的編碼方式讀取數據流
/// ContentHtml.Text = sr.ReadToEnd(); //輸出(HTML代碼),ContentHtml為Multiline模式的TextBox控件
/// resStream.Close();
/// **************代碼結束********
///?
wc.Dispose();

?

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最接近的注冊匹配項返回。例如,當以http://開頭的URI在requestUri中傳遞時,由Create返回一個HttpWebRequest。如果改為傳遞以file://開頭的URI,則Create方法將返回FileWebRequest實例。.NET Framework包括對http://和file:// URI方案的支持。


WebResponse類

  WebResponse類是abstract基類,協議特定的響應類從該抽象基類派生。應用程序可以使用 WebResponse類的實例以協議不可知的方式參與請求和響應事務,而從WebResponse類派生的協議特定的類攜帶請求的詳細信息。

  在WebResponse類中最常用的是GetResponse方法,GetResponse方法用于當在子類中被重寫時,返回對 Internet 請求的響應

  語法:

  public virtual WebResponse GetResponse ()

  返回值:包含對Internet請求的響應的WebResponse。


源代碼

///引用命名空間
using System.IO;
using System.Net;
using System.Text;

PageUrl = "http://www.webkaka.com"; //需要獲取源代碼的網頁
WebRequest request = WebRequest.Create(PageUrl); //WebRequest.Create方法,返回WebRequest的子類HttpWebRequest
WebResponse response = request.GetResponse(); //WebRequest.GetResponse方法,返回對 Internet 請求的響應
Stream resStream = response.GetResponseStream(); //WebResponse.GetResponseStream 方法,從 Internet 資源返回數據流。?
Encoding enc = Encoding.GetEncoding("GB2312"); // 如果是亂碼就改成 utf-8 / GB2312
StreamReader sr = new StreamReader(resStream, enc); //命名空間:System.IO。 StreamReader 類實現一個 TextReader (TextReader類,表示可讀取連續字符系列的讀取器),使其以一種特定的編碼從字節流中讀取字符。?
ContentHtml.Text = sr.ReadToEnd(); //輸出(HTML代碼),ContentHtml為Multiline模式的TextBox控件
resStream.Close();?
sr.Close();

轉載于:https://www.cnblogs.com/yuhanzhong/p/4637991.html

總結

以上是生活随笔為你收集整理的c#利用WebClient和WebRequest获取网页源代码的比较的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。