C#实现通过WebRequest的WebProxy代理IP和端口下载网页内容源码

C#开发 2014-09-20 15007阅读 0评论 0收藏 收藏本文

C#开发中,一些需要实现抓取某个网站网页内容的需求,但现在很多网站都有单位时间内访问次数的限制。为了在短时间内抓取到更多我们想要的网页内容,这时我们就需要使用代理来实现了。C#来实现IP代理抓取是非常容易实现的,只需要通过WebRequest的Proxy属性来实现,以下为具体实现方法:

 private static string DownLoadHtml(string url, int timeout = 30, bool enableProxy = false)
    {
      try
      {
        string html = "";
        var myRequest = (HttpWebRequest)WebRequest.Create(url);
        myRequest.Method = "GET";
        myRequest.Timeout = 1000 * timeout;
        myRequest.AllowAutoRedirect = true;
        if (enableProxy)
        {
          //如果启用WEBPROXY代理
          var webProxy = new WebProxy("37.239.46.18", 80);
          myRequest.Proxy = webProxy;
        }
        var myResponse = (HttpWebResponse)myRequest.GetResponse();
        using (var sr = new StreamReader(myResponse.GetResponseStream(), Encoding.GetEncoding((myResponse.CharacterSet))))
        {
          html = sr.ReadToEnd();
          myResponse.Close();
        }
        return html;
      }
      catch (Exception ex)
      {
        throw new Exception(ex.Message);
      }
    }
该方法有三个参数,url为目标页面,timeout为抓取网页的超时时间,enableProxy为是否启用代理。如果成功执行,则返回抓取到的目标页面的源代码。 需要注意的是:在使用此方法之前,你得找到可用的IP(包括主机和端口,如本例中的主机为:37.239.46.18,端口为:80)。

转载请注明:图享网 » C#实现通过WebRequest的WebProxy代理IP和端口下载网页内容源码

文章评论

获取验证码