首页 > 代码库 > C#远程获取/读取网页内容

C#远程获取/读取网页内容

转载自 :http://blog.csdn.net/gisfarmer/article/details/2836904

 

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Text;
  4. using System.Net;
  5. using System.IO;
  6. namespace thief
  7. {
  8.     class Program
  9.     {
  10.         static void Main(string[] args)
  11.         {
  12.             
  13.             try {
  14.                 WebClient MyWebClient = new WebClient();
  15.                 MyWebClient.Credentials = CredentialCache.DefaultCredentials;//获取或设置用于对向Internet资源的请求进行身份验证的网络凭据。
  16.                 Byte[] pageData = MyWebClient.DownloadData(http://www.163.com); //从指定网站下载数据
  17.                 string pageHtml = Encoding.Default.GetString(pageData);  //如果获取网站页面采用的是GB2312,则使用这句              
  18.                 //string pageHtml = Encoding.UTF8.GetString(pageData); //如果获取网站页面采用的是UTF-8,则使用这句
  19.                 Console.WriteLine(pageHtml);//在控制台输入获取的内容
  20.                 using (StreamWriter sw = new StreamWriter("c://test//ouput.html"))//将获取的内容写入文本
  21.                 {
  22.                     sw.Write(pageHtml);
  23.                 }
  24.                 Console.ReadLine(); //让控制台暂停,否则一闪而过了               
  25.             }
  26.             catch(WebException webEx) {
  27.                 Console.WriteLine(webEx.Message.ToString());
  28.             }
  29.         }
  30.     }
  31. }

改进一下,加入定时器后

      1. using System;
      2. using System.Text;
      3. using System.Timers;
      4. using System.Net;
      5. using System.IO;
      6. //<summary>
      7. //每隔5秒钟将指定网页的内容抓取下来,并以文件形式保存到c:/test目录中
      8. //</summary>
      9. namespace TimerTest
      10. {
      11.     class Program
      12.     {
      13.         public static string outFileName = "";                  //生成的文件名
      14.         public static string myUrl = "http://bxg.cfchina.cn";    //要抓取的网页
      15.         static void Main(string[] args)
      16.         {
      17.             Timer mytimer = new Timer();
      18.             mytimer.Elapsed +=new ElapsedEventHandler(GetUrl);//指定定时器的事件
      19.             mytimer.Interval = 5000;//每隔5秒抓一次
      20.             mytimer.Start();
      21.             mytimer.Enabled = true;
      22.             while (Console.Read() != ‘q‘) //直到按小写字母q退出,否则一直抓取下去
      23.             {
      24.             }
      25.         }
      26.         //定时器事件内容
      27.         static void GetUrl(object source, ElapsedEventArgs e)
      28.         {
      29.             try
      30.             {
      31.                 WebClient MyWebClient = new WebClient();
      32.                 MyWebClient.Credentials = CredentialCache.DefaultCredentials;//获取或设置用于对向Internet资源的请求进行身份验证的网络凭据。
      33.                 Byte[] pageData = MyWebClient.DownloadData(myUrl);//从指定网站下载数据
      34.                 string pageHtml = Encoding.Default.GetString(pageData);  //如果获取网站页面采用的是GB2312,则使用这句              
      35.                 //string pageHtml = Encoding.UTF8.GetString(pageData); //如果获取网站页面采用的是UTF-8,则使用这句
      36.                 //Console.WriteLine(pageHtml);//在控制台输入获取的内容
      37.                 outFileName = "C://test//" + DateTime.Now.ToString().Replace(" ", "").Replace(":", "").Replace("-", "") + ".html";
      38.                 using (StreamWriter sw = new StreamWriter(outFileName))//将获取的内容写入文本
      39.                 {
      40.                     sw.Write(pageHtml);
      41.                 }
      42.                 Console.WriteLine(outFileName);  //输出保存后的文件名                      
      43.             }
      44.             catch (WebException webEx)
      45.             {
      46.                 Console.WriteLine(webEx.Message.ToString());
      47.             }
      48.         }
      49.     }
      50. }