• 网页数据采集HTTP Get,Post登录提交数据--VBS之Microsoft.XMLHTTP对象


    MSXML中提供了Microsoft.XMLHTTP对象,能够完成从数据包到Request对象的转换以及发送任务。
    创建XMLHTTP对象的语句如下:
    Set objXML = CreateObject("Msxml2.XMLHTTP") 或
    Set objXML = CreateObject(“Microsoft.XMLHTTP”)
    ' Or, for version 3.0 of XMLHTTP, use:
    ' Set xml = Server.CreateObject("MSXML2.ServerXMLHTTP")
    对象创建后调用Open方法对Request对象进行初始化,语法格式为:
    poster.open http-method, url, async, userID, password
    Open方法中包含了5个参数,前三个是必要的,后两个是可选的(在服务器需要进行身份验证时提供)。参数的含义如下所示: 
    http-method: HTTP的通信方式,比如GET或是 POST
    url: 接收XML数据的服务器的URL地址。通常在URL中要指明 ASP或CGI程序
    async:一个布尔标识,说明请求是否为异步的。如果是异步通信方式(true),客户机就不等待服务器的响应;如果是同步方式(false),客户机就要等到服务器返回消息后才去执行其他操作
    userID 用户ID,用于服务器身份验证
    password 用户密码,用于服务器身份验证
    XMLHTTP对象的Send方法
    用Open方法对Request对象进行初始化后,调用Send方法发送XML数据:
    poster.send XML-data
    Send方法的参数类型是Variant,可以是字符串、DOM树或任意数据流。发送数据的方式分为同步和异步两种。在异步方式下,数据包一旦发送完毕,就结束Send进程,客户机执行其他的操作;而在同步方式下,客户机要等到服务器返回确认消息后才结束Send进程。
    XMLHTTP对象中的readyState属性能够反映出服务器在处理请求时的进展状况。客户机的程序可以根据这个状态信息设置相应的事件处理方法。属性值及其含义如下表所示:
    值 说明
    0 Response对象已经创建,但XML文档上载过程尚未结束
    1 XML文档已经装载完毕
    2 XML文档已经装载完毕,正在处理中
    3 部分XML文档已经解析
    4 文档已经解析完毕,客户端可以接受返回消息
    客户机处理响应信息
    客户机接收到返回消息后,进行简单的处理,基本上就完成了C/S之间的一个交互周期。客户机接收响应是通过XMLHTTP对象的属性实现的:
    ● responseTxt:将返回消息作为文本字符串;
    ● responseXML:将返回消息视为XML文档,在服务器响应消息中含有XML数据时使用;
    ● responseStream:将返回消息视为Stream对象。

    Set objXML = CreateObject("Microsoft.XMLHTTP") '创建XMLHTTP组件;
    UrlSend = "http://xxxx/"
    objXML.open "GET",UrlSend,false
    objXML.send()
    ReturnVar = objXML.responseText
    '处理返回数据做判断!

    '取得网页文件代码函数
    function getHTTPPage(url)
    dim http
    set http=createobject("MSXML2.XMLHTTP")
    Http.open "GET",url,false
    Http.send()
    if Http.readystate<>4 then
     exit function
    end if
    getHTTPPage=bytes2BSTR(Http.responseBody)
    set http=nothing
    if err.number<>0 then err.Clear
    end function

    '字节转化成字符串函数
    Function bytes2BSTR(vIn)
    dim strReturn
    dim i,ThisCharCode,NextCharCode
    strReturn = ""
    For i = 1 To LenB(vIn)
    ThisCharCode = AscB(MidB(vIn,i,1))
    If ThisCharCode < &H80 Then
    strReturn = strReturn & Chr(ThisCharCode)
    Else
    NextCharCode = AscB(MidB(vIn,i+1,1))
    strReturn = strReturn & Chr(CLng(ThisCharCode) * &H100 + CInt(NextCharCode))
    i = i + 1
    End If
    Next
    bytes2BSTR = strReturn
    End Function

    比如你的myurl="www.163.com"
    Content = getHTTPPage(myurl)
    你可以response.write出content来看,然后用instr,mid,replace提炼出页面的主题

    Function GetHTTPPage(url) '获取服务器生成的html代码
     on error resume next
     dim XmlHttp
     set XmlHttp=Server.createobject("Microsoft.XMLHTTP")
     XmlHttp.open "GET",url,false
     XmlHttp.send()
     'getHTTPPage=Http.responseText
     if XmlHttp.readystate<>4 then exit function
     GetHTTPPage=bytes2BSTR(XmlHttp.responseBody)
     set XmlHttp=nothing
     if err.number<>0 then err.Clear
    End Function

    Function Bytes2bStr(vin)
      Dim BytesStream,StringReturn
      Set BytesStream = Server.CreateObject("ADODB.Stream")
      BytesStream.Type = 2
      BytesStream.Open
      BytesStream.WriteText vin
      BytesStream.Position = 0
      BytesStream.Charset = "GB2312"
      BytesStream.Position = 2
      StringReturn =BytesStream.ReadText
      BytesStream.close
      Set BytesStream = Nothing
      Bytes2bStr = StringReturn
    End Function
     

    function GetXml(Url){
    try{
     var XmlHttp=Server.CreateObject("Microsoft.XMLHTTP");
     XmlHttp.open("get",Url,false);
     XmlHttp.send();
     return XmlHttp.responseBody;
    }catch(e){return null}
    }
    function Bytes2bStr(vin){
    try{
     var BytesStream,StringReturn;
     BytesStream = Server.CreateObject("ADODB.Stream")
     with(BytesStream){
      Type =2;
      Open();
      WriteText(vin);
      Position = 0 ;
      Charset = "GB2312";
      Position = 2;
      StringReturn = ReadText();
      close();
     }
     BytesStream = null
     return StringReturn;
    }catch(e){return ""}
    }

  • 相关阅读:
    【新品发布】原来做多用途(室内、室外)无人机开发还能用它——P450进阶版
    C++之继承
    gRPC 协议缓冲区
    薪资达十万、百万的居然是游戏建模
    Dependabot 开始支持 pub package 版本检测
    this硬绑定
    前后端分离项目,vue+uni-app+php+mysql在线考试系统(H5移动项目) 开题报告
    对极几何(Epipolar Geometry)
    软件公司之间合作的保密协议
    Matlab图像处理-模式识别
  • 原文地址:https://blog.csdn.net/xiaoyao961/article/details/133828601