zoukankan      html  css  js  c++  java
  • 【转载】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技术小趣屋

    博主个人技术交流群:960640092,博主微信公众号如下:

  • 相关阅读:
    Matlab高级教程_第二篇:Matlab相见恨晚的模块_02_并行运算-1
    Matlab高级教程_第一篇:Matlab基础知识提炼_06
    利用ubuntu的alias命令来简化许多复杂难打的命令
    无线路由设置
    解决Ubuntu下使用命令行subl 打开Sublime text3无法输入中文的问题
    ubuntu 14.04 lamp 安装与配置
    ubuntu14.04 login loop issue
    机器学习资源大全
    技巧:利用putty通过win7访问ubuntu
    使用XML-RPC进行远程文件共享
  • 原文地址:https://www.cnblogs.com/xu-yi/p/10525109.html
Copyright © 2011-2022 走看看