C#基础 读取网页内容 代码示例

  C#读取网页内容主要有使用WebClient和使用HttpWebResponse两种方法,下面我分别写了两种方法以做示例。

  其中将内容输出到文件中的方法,若不了解需先阅读:

  C#基础 字符串读取/写入文本文件 代码示例

 1     public class WebCrawler
 2     {
 3         /// <summary>
 4         /// 使用WebClient,将指定网址的内容输出到指定文件内
 5         /// </summary>
 6         /// <param name="url">网址</param>
 7         /// <param name="path">输出文件路径</param>
 8         /// <param name="encoding">文件编码格式</param>
 9         public void GetContextByClient(string url, string path, Encoding encoding)
10         {
11             WebClient MyWebClient = new WebClient();
12             //获取或设置用于向Internet资源的请求进行身份验证的网络凭据
13             MyWebClient.Credentials = CredentialCache.DefaultCredentials;
14             //从指定网站下载数据
15             byte[] pageData = MyWebClient.DownloadData(url);
16             //使用指定字符集,转换为字符串
17             string pageHtml = encoding.GetString(pageData);
18             //在控制台输出获取的内容
19             Console.WriteLine(pageHtml);
20             //写入文件
21             System.IO.File.WriteAllBytes(path, pageData);
22         }
23         /// <summary>
24         /// 使用HttpWebResponse,将指定网址的内容输出到指定文件内
25         /// </summary>
26         /// <param name="url">网址</param>
27         /// <param name="path">输出文件路径</param>
28         /// <param name="encoding">文件编码格式</param>
29         public void GetContextByHttp(string url, string path, Encoding encoding)
30         {
31             Uri httpURL = new Uri(url);
32             //HttpWebRequest类继承于WebRequest,并没有自己的构造函数
33             //需通过WebRequest的Creat方法建立,并进行强制的类型转换 
34             HttpWebRequest httpReq = (HttpWebRequest)WebRequest.Create(httpURL);
35             ///通过HttpWebRequest的GetResponse()方法建立HttpWebResponse,强制类型转换
36             HttpWebResponse httpResp = (HttpWebResponse)httpReq.GetResponse();
37             //GetResponseStream()方法获取HTTP响应的数据流,并尝试取得URL中所指定的网页内容
38             //若成功取得网页的内容,则以System.IO.Stream形式返回,
39             //若失败则产生ProtoclViolationException错误。
40             // 在此正确的做法应将以下的代码放到一个try块中处理。这里简单处理 
41             Stream respStream = httpResp.GetResponseStream();
42             ///返回的内容是Stream形式的,所以可以利用StreamReader类获取GetResponseStream的内容,并以
43             ///StreamReader类的Read方法依次读取网页源程序代码每一行的内容,直至行尾 
44             StreamReader respStreamReader = new StreamReader(respStream, encoding);
45             string context = respStreamReader.ReadToEnd();
46             respStream.Close();
47             StreamWriter sw = new StreamWriter(path, false, encoding);
48             sw.Write(context);
49         }
50     }
原文地址:https://www.cnblogs.com/vsSure/p/7881777.html