webreqeust/webresponse抓取URL信息
一般情况下,如果无特殊的需要,对于抓去网页数据,可以使用WebClient,也可以使用webrequest/webresponse这对组合,不过我使用webrequest/webresponse的时候比较多一些,所以,自己整理了一个网页抓取类,上代码:

 Code
Code1

 /**//// <summary>
/**//// <summary>2
 /// Web下载工具
    /// Web下载工具3
 /// </summary>
    /// </summary>4
 public class WebDownload : IDisposable
    public class WebDownload : IDisposable5

 
     {
{6

 事件#region 事件
        事件#region 事件7

8

 /**//// <summary>
        /**//// <summary>9
 /// 下载完成事件
        /// 下载完成事件10
 /// </summary>
        /// </summary>11
 //public event EventHandler DownloadComplete;
        //public event EventHandler DownloadComplete;12

13
 #endregion
        #endregion14

15

 字段#region 字段
        字段#region 字段16

 /**//// <summary>
        /**//// <summary>17
 /// 请求对象
        /// 请求对象18
 /// </summary>
        /// </summary>19
 private HttpWebRequest m_request;
        private HttpWebRequest m_request;20

21

 /**//// <summary>
        /**//// <summary>22
 /// 请求返回对象
        /// 请求返回对象23
 /// </summary>
        /// </summary>24
 private HttpWebResponse m_response;
        private HttpWebResponse m_response;25

26

 /**//// <summary>
        /**//// <summary>27
 /// 请求URL
        /// 请求URL28
 /// </summary>
        /// </summary>29
 public string Url = string.Empty;
        public string Url = string.Empty;30

31

 /**//// <summary>
        /**//// <summary>32
 /// Method
        /// Method33
 /// </summary>
        /// </summary>34
 public string Method = string.Empty;
        public string Method = string.Empty;35

36

 /**//// <summary>
        /**//// <summary>37
 /// 数据类型
        /// 数据类型38
 /// </summary>
        /// </summary>39
 public string ContentType = string.Empty;
        public string ContentType = string.Empty;40

41

 /**//// <summary>
        /**//// <summary>42
 /// referer
        /// referer43
 /// </summary>
        /// </summary>44
 public string Referer = string.Empty;
        public string Referer = string.Empty;45

46

 /**//// <summary>
        /**//// <summary>47
 /// 是否允许重定向
        /// 是否允许重定向48
 /// </summary>
        /// </summary>49
 public bool AllowAutoRedirect = true;
        public bool AllowAutoRedirect = true;50

51

 /**//// <summary>
        /**//// <summary>52
 /// accept
        /// accept53
 /// </summary>
        /// </summary>54
 public string Accept = string.Empty;
        public string Accept = string.Empty;55

56

 /**//// <summary>
        /**//// <summary>57
 /// 提交的数据
        /// 提交的数据58
 /// </summary>
        /// </summary>59
 public string PostData = string.Empty;
        public string PostData = string.Empty;60

61

 /**//// <summary>
        /**//// <summary>62
 /// cookies
        /// cookies63
 /// </summary>
        /// </summary>64
 public CookieContainer Cookies = null;
        public CookieContainer Cookies = null;65

66

 /**//// <summary>
        /**//// <summary>67
 /// 连接超时时间
        /// 连接超时时间68
 /// </summary>
        /// </summary>69
 public int Timeout = 100000;
        public int Timeout = 100000;70

71

 /**//// <summary>
        /**//// <summary>72
 /// 编码类型
        /// 编码类型73
 /// </summary>
        /// </summary>74
 public Encoding Encode = Encoding.Default;
        public Encoding Encode = Encoding.Default;75

76

 /**//// <summary>
        /**//// <summary>77
 /// useragent
        /// useragent78
 /// </summary>
        /// </summary>79
 public string UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727)";
        public string UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727)";80

81

 /**//// <summary>
        /**//// <summary>82
 /// 请求返回的数据流
        /// 请求返回的数据流83
 /// </summary>
        /// </summary>84
 //public Stream ReceiveData = null;
        //public Stream ReceiveData = null;85
 #endregion
        #endregion86

87

 构造函数#region 构造函数
        构造函数#region 构造函数88

 /**//// <summary>
        /**//// <summary>89
 /// 下载工具
        /// 下载工具90
 /// </summary>
        /// </summary>91
 /// <param name="url"></param>
        /// <param name="url"></param>92
 /// <param name="method"></param>
        /// <param name="method"></param>93
 public WebDownload(string url, string method) : this( url,method,string.Empty )
        public WebDownload(string url, string method) : this( url,method,string.Empty )94

 
         {
{95
 }
        }96

97

 /**//// <summary>
        /**//// <summary>98
 /// 下载工具
        /// 下载工具99
 /// </summary>
        /// </summary>100
 /// <param name="url"></param>
        /// <param name="url"></param>101
 /// <param name="method"></param>
        /// <param name="method"></param>102
 /// <param name="postData"></param>
        /// <param name="postData"></param>103
 public WebDownload(string url, string method, string postData) : this( url,method,postData,"application/x-www-form-urlencoded" )
        public WebDownload(string url, string method, string postData) : this( url,method,postData,"application/x-www-form-urlencoded" )104

 
         {
{105
 }
        }106

107

 /**//// <summary>
        /**//// <summary>108
 /// 下载工具
        /// 下载工具109
 /// </summary>
        /// </summary>110
 /// <param name="url"></param>
        /// <param name="url"></param>111
 /// <param name="method"></param>
        /// <param name="method"></param>112
 /// <param name="postData"></param>
        /// <param name="postData"></param>113
 /// <param name="contentType"></param>
        /// <param name="contentType"></param>114
 public WebDownload(string url, string method, string postData, string contentType) : this( url,method,postData,contentType,"image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, application/x-silverlight, */*" )
        public WebDownload(string url, string method, string postData, string contentType) : this( url,method,postData,contentType,"image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, application/x-silverlight, */*" )115

 
         {
{116
 }
        }117

118

 /**//// <summary>
        /**//// <summary>119
 /// 下载工具
        /// 下载工具120
 /// </summary>
        /// </summary>121
 /// <param name="url"></param>
        /// <param name="url"></param>122
 /// <param name="method"></param>
        /// <param name="method"></param>123
 /// <param name="postData"></param>
        /// <param name="postData"></param>124
 /// <param name="contentType"></param>
        /// <param name="contentType"></param>125
 /// <param name="accept"></param>
        /// <param name="accept"></param>126
 public WebDownload(string url, string method, string postData, string contentType, string accept) : this( url,method,postData,contentType,accept,string.Empty )
        public WebDownload(string url, string method, string postData, string contentType, string accept) : this( url,method,postData,contentType,accept,string.Empty )127

 
         {
{128
 }
        }129

130

 /**//// <summary>
        /**//// <summary>131
 /// 下载工具
        /// 下载工具132
 /// </summary>
        /// </summary>133
 /// <param name="url"></param>
        /// <param name="url"></param>134
 /// <param name="method"></param>
        /// <param name="method"></param>135
 /// <param name="postData"></param>
        /// <param name="postData"></param>136
 /// <param name="contentType"></param>
        /// <param name="contentType"></param>137
 /// <param name="accept"></param>
        /// <param name="accept"></param>138
 /// <param name="referer"></param>
        /// <param name="referer"></param>139
 public WebDownload(string url, string method, string postData, string contentType, string accept,string referer) : this( url,method,postData,contentType,accept,referer,true )
        public WebDownload(string url, string method, string postData, string contentType, string accept,string referer) : this( url,method,postData,contentType,accept,referer,true )140

 
         {
{141
 }
        }142

143

 /**//// <summary>
        /**//// <summary>144
 /// 下载工具
        /// 下载工具145
 /// </summary>
        /// </summary>146
 /// <param name="url"></param>
        /// <param name="url"></param>147
 /// <param name="method"></param>
        /// <param name="method"></param>148
 /// <param name="postData"></param>
        /// <param name="postData"></param>149
 /// <param name="contentType"></param>
        /// <param name="contentType"></param>150
 /// <param name="accept"></param>
        /// <param name="accept"></param>151
 /// <param name="referer"></param>
        /// <param name="referer"></param>152
 /// <param name="autoredirect"></param>
        /// <param name="autoredirect"></param>153
 public WebDownload(string url, string method, string postData, string contentType, string accept, string referer,bool autoredirect)
        public WebDownload(string url, string method, string postData, string contentType, string accept, string referer,bool autoredirect)154

 
         {
{155
 Url = url;
            Url = url;156
 Method = method;
            Method = method;157
 PostData = postData;
            PostData = postData;158
 ContentType = contentType;
            ContentType = contentType;159
 Accept = accept;
            Accept = accept;160
 Referer = referer;
            Referer = referer;161
 AllowAutoRedirect = autoredirect;
            AllowAutoRedirect = autoredirect;162
 }
        }163
 #endregion
        #endregion164

165

 方法#region 方法
        方法#region 方法166

167

 /**//// <summary>
        /**//// <summary>168
 /// 下载数据
        /// 下载数据169
 /// </summary>
        /// </summary>170
 public Stream Download()
        public Stream Download()171

 
         {
{172
 m_request = (HttpWebRequest)WebRequest.Create(Url);
            m_request = (HttpWebRequest)WebRequest.Create(Url);173

174
 //创建cookies容器
            //创建cookies容器175
 CookieContainer cc = null;
            CookieContainer cc = null;176
 if (Cookies != null)
            if (Cookies != null)177
 cc = Cookies;
                cc = Cookies;178
 else
            else179
 cc = new CookieContainer();
                cc = new CookieContainer();180
 m_request.ContentType = ContentType;
            m_request.ContentType = ContentType;181
 m_request.UserAgent = UserAgent;
            m_request.UserAgent = UserAgent;182
 m_request.Referer = Referer;
            m_request.Referer = Referer;183
 m_request.AllowAutoRedirect = AllowAutoRedirect;
            m_request.AllowAutoRedirect = AllowAutoRedirect;184
 m_request.Accept = Accept;
            m_request.Accept = Accept;185
 m_request.Timeout = Timeout;
            m_request.Timeout = Timeout;186
 m_request.Method = Method;
            m_request.Method = Method;187

188
 //检查是否有提交数据,只有post才可提交数据
            //检查是否有提交数据,只有post才可提交数据189
 if (PostData.Length > 0 && Method == "POST")
            if (PostData.Length > 0 && Method == "POST")190

 
             {
{191
 byte[] bytes = Encode.GetBytes(PostData);
                byte[] bytes = Encode.GetBytes(PostData);192
 Stream postStream = m_request.GetRequestStream();
                Stream postStream = m_request.GetRequestStream();193
 postStream.Write(bytes, 0, bytes.Length);
                postStream.Write(bytes, 0, bytes.Length);194
 postStream.Close();
                postStream.Close();195
 }
            }196

197
 try
            try198

 
             {
{199
 m_response = (HttpWebResponse)m_request.GetResponse();
                m_response = (HttpWebResponse)m_request.GetResponse();200
 }
            }201
 catch (WebException ex)
            catch (WebException ex)202

 
             {
{203
 if (ex.Response != null)
                if (ex.Response != null)204

 
                 {
{205
 m_response = (HttpWebResponse)ex.Response;
                    m_response = (HttpWebResponse)ex.Response;206
 }
                }207
 else
                else208

 
                 {
{209
 throw ex;
                    throw ex;210
 }
                }211
 }
            }212
 return m_response.GetResponseStream();
            return m_response.GetResponseStream();213
 //if (DownloadComplete != null)
            //if (DownloadComplete != null)214
 //{
            //{215
 //    DownloadComplete(this, EventArgs.Empty);
            //    DownloadComplete(this, EventArgs.Empty);216
 //}
            //}217
 }
        }218

219
 #endregion
        #endregion220

221

 IDisposable 成员#region IDisposable 成员
        IDisposable 成员#region IDisposable 成员222

223
 public void Dispose()
        public void Dispose()224

 
         {
{225
 if (m_response != null)
            if (m_response != null)226
 m_response.Close();
                m_response.Close();227
 }
        }228

229
 #endregion
        #endregion230
 }
    } 
                    
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号