【转载】ASP.NET以Post方式抓取远程网页内容类似爬虫功能
使用HttpWebRequest等Http相关类,可以在应用程序中或者网站中模拟浏览器发送Post请求,在请求带入相应的Post参数值,而后请求回远程网页信息。实现这一功能也很简单,主要是依靠HttpWebRequest、HttpWebResponse、Stream等几个类来完成。
首先来看下MSDN上对这几个类的定义:
HttpWebRequest类:提供用于在预先定义的属性和方法支持的WebRequest和用于附加属性和方法,使用户直接使用HTTP服务器进行交互。
HttpWebResponse类:包含对WebResponse类的属性和方法的HTTP特定用法的支持。该HttpWebResponse类用于构建发送HTTP请求HTTP独立的客户端应用程序和接收HTTP响应。
Stream类:所有流的抽象基类。流是字节序列的抽象,例如文件,输入/输出设备,进程间通信管道或TCP / IP套接字。的流类及其派生类提供这些不同类型的输入和输出的的一般视图,并分离从操作系统的具体细节和基础设备编程器。
下面直接贴代码了,已经将该功能封装成一个方法。
/// <summary> /// 以POST方式抓取远程页面内容 /// </summary> /// <param name="postData">参数列表</param> public static string Post_Http(string url, string postData, string encodeType) { string strResult = null; try { Encoding encoding = Encoding.GetEncoding(encodeType); byte[] POST = encoding.GetBytes(postData); HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(url); myRequest.Method = "POST"; myRequest.ContentType = "application/x-www-form-urlencoded"; myRequest.ContentLength = POST.Length; Stream newStream = myRequest.GetRequestStream(); newStream.Write(POST, 0, POST.Length); //设置POST newStream.Close(); HttpWebResponse myResponse = (HttpWebResponse)myRequest.GetResponse(); StreamReader reader = new StreamReader(myResponse.GetResponseStream(), Encoding.Default); strResult = reader.ReadToEnd(); } catch (Exception ex) { strResult = ex.Message; } return strResult; }
备注:此文章转载自ASP.NET以Post方式抓取远程网页内容类似爬虫功能_IT技术小趣屋。