• 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. }
  • 相关阅读:
    CSP内容安全策略总结及如何抵御 XSS 攻击
    CORS跨域资源共享总结
    web安全总结
    小知识随手记(八)
    内存泄漏问题总结
    Vue中插槽slot的使用
    Git常用命令、及常见报错处理:You have not concluded your merge (MERGE_HEAD exists)、清理无效的远程追踪分支
    render函数、createElement函数与vm.$slots
    Redis集群(二):Redis的安装
    Shell命令_文件系统常用命令df、du
  • 原文地址:https://www.cnblogs.com/xuxin-1989/p/3896579.html
Copyright © 2020-2023  润新知