VBA信息获取与处理专题六第一节:XMLHTTP的简单讲解及相关概念的介绍

《VBA信息获取与处理》教程(版权10178984)是我推出第六套教程,目前已经是第一版修订了。这套教程定位于最高级,是学完初级,中级后的教程。这部教程给大家讲解的内容有:跨应用程序信息获得、随机信息的利用、电子邮件的发送、VBA互联网数据抓取、VBA延时操作,剪贴板应用、Split函数扩展、工作表信息与其他应用交互,FSO对象的利用、工作表及文件夹信息的获取、图形信息的获取以及定制工作表信息函数等等内容。程序文件通过32位和64位两种OFFICE系统测试。是非常抽象的,更具研究的价值。

教程共两册,二十个专题。今日分享内容是:VBA信息获取与处理专题六第一节:XMLHTTP的简单讲解及相关概念的介绍

【分享成果,随喜正能量】6风华是一指流砂,苍老是一段年华。人生是一段既定的旅程,流砂落尽,万事成空。没有谁的光阴比谁多出多少,不过是我在先行,你在后来,而我们,皆会化为尘土。人生的旅途,各自追求,各自珍惜。额头的皱纹,一道就是一段岁月,里面深藏记忆。无论已到哪里,少回头,多务实,当下不虚度,人生可无悔。岁月,里面深藏记忆。无论已到哪里,少回头,多务实,当下不虚度,人生可无悔。

专题六 VBA中利用XMLHTTP完成网抓数据

大家好,我们今天开始进入新的专题的学习,从这讲开始我们将开始进入网抓的内容,这块内容同上一个专题邮件的发送都是VBA在互联网上的应用部分,这部分内容一共是五个专题,分别讲解VBA与邮件的发送,VBA利用XMLHTTP完成网抓数据,VBA利用InternetExplorer完成网抓数据,VBA利用QueryTables完成网抓数据,同时在专题中间还要用两个专题的内容对HTML文件知识及网络元素进行讲解,这个两个专题放在第这个专题之后,让大家先对网页文档及网页元素有一个大概的了解之后再详细的介绍。对于VBA在互联网的互动内容,我一直以来不是太热衷,但就其实用性来讲确实是无法比拟的。所以我在这套VBA应用提高篇中对这块内容才做讲解。

我们这个专题是利用XMLHTTP完成网抓数据。

第一节 XMLHTTP的简单讲解及相关概念的介绍

现在的社会是网络的社会,离开了网络,很多工作会变得不通畅。我们日常的生活也是和网络紧密联系一起的,那么网络是如何搭建的呢?我们可以通过本讲的讲解了解到HTTP 超文本传输协议,TCP/IP的介绍,XMLHTTP的介绍,等等。

1 什么是XMLHTTP,它是用来做什么的?

1) XML的介绍 XML指可扩展标记语言(EXtensible Markup Language),设计宗旨是传输数据,是W3C (万维网联盟World Wide Web Consortium)的推荐标准。XML 是各种应用程序之间进行数据传输的最常用的工具,并且在信息存储和描述领域变得越来越流行。

2) HTTP的介绍 HTTP 超文本传输协议(HyperText Transfer Protocol,超文本传输协议)是因特网上应用最为广泛的一种网络传输协议,所有的WWW文件都必须遵守这个标准。

HTTP是一个基于TCP/IP通信协议来传递数据(HTML 文件, 图片文件, 查询结果等)。

3) TCP/IP的介绍 TCP/IP是供已连接因特网的计算机进行通信的通信协议(Transmission Control Protocol / Internet Protocol)。定义了电子设备(比如计算机)如何连入因特网,以及数据如何在它们之间传输的标准。

TCP 用于应用程序之间的通信。当应用程序希望通过 TCP 与另一个应用程序通信时,它会发送一个通信请求。这个请求必须被送到一个确切的地址。在双方"握手"之后,TCP 将在两个应用程序之间建立一个全双工 (full-duplex) 的通信。这个全双工的通信将占用两个计算机之间的通信线路,直到它被一方或双方关闭为止。

IP 用于计算机之间的通信。IP 是无连接的通信协议。它不会占用两个正在通信的计算机之间的通信线路。这样,IP 就降低了对网络线路的需求。每条线可以同时满足许多不同的计算机之间的通信需要。通过 IP,消息(或者其他数据)被分割为小的独立的包,并通过因特网在计算机之间传送。IP 负责将每个包路由至它的目的地。

TCP/IP协议意味着 TCP 和 IP 在一起协同工作。TCP 负责应用软件(比如你的浏览器)和网络软件之间的通信。IP 负责计算机之间的通信。TCP 负责将数据分割并装入 IP 包,然后在它们到达的时候重新组合它们。IP 负责将包发送至接受者。

4) XMLHTTP的介绍 XMLHTTP是一套可以在Javascript、VbScript、Jscript等脚本语言中通过http协议传送或从接收XML及其他数据的一套API。XmlHttp最大的用处是可以更新网页的部分内容而不需要刷新整个页面。

来自MSDN的解释:XmlHttp提供客户端同http服务器通讯的协议。客户端可以通过XmlHttp对象(MSXML2.XMLHTTP.3.0)向http服务器发送请求并使用微软XML文档对象模型Microsoft® XML Document Object Model (DOM)处理回应。

现在的绝对多数浏览器都增加了对XmlHttp的支持,IE中使用ActiveXObject方式创建XmlHttp对象,其他浏览器如:Firefox、Opera等通过window.XMLHttpRequest来创建xmlhttp对象.

2 应用XMLHTTP抓取数据的步骤

1)创建XMLHTTP对象 //需MSXML4.0支持

2)打开与服务端的连接,同时定义指令发送方式,服务网页(URL)和请求权限等。客户端通过Open命令打开与服务端的服务网页的连接。与普通HTTP指令传送一样,可以用"GET"方法或"POST"方法指向服务端的服务网页。

3)发送指令。

4)等待并接收服务端返回的处理结果。

5)释放XMLHTTP对象

3 XMLHTTP的属性及方法

  1. XMLHTTP的常见属性:

onreadystatechange:在同步执行方式下获得返回结果的事件句柄。只能在DOM中调用。

responseBody:   结果返回为无符号整数数组。

responseStream:  结果返回为IStream流。

responseText:   结果返回为字符串。

responseXML:   结果返回为XML格式数据。

2) XMLHTTP的常用方法:

① Open(bstrMethod, bstrUrl, varAsync, bstrUser, bstrPassword)创建一个新的http请求,并指定此请求的方法、URL以及验证信息(用户名/密码)打开指定网址

bstrMethod:  数据传送方式,即GET或POST。

bstrUrl:    服务网页的URL。

varAsync:   是否同步执行。缺省为True,即同步执行,但只能在DOM中实施同步执行。用中一般将其置为False,即异步执行。

bstrUser:    用户名,可省略。

bstrPassword:用户口令,可省略。

setRequestHeader(bstrHeader, bstrvalue)

bstrHeader:HTTP 头(header)

bstrvalue: HTTP 头(header)的值

如果Open方法定义为POST,可以定义表单方式上传:

xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded")

② Send(varBody)发送请求到http服务器并接收回应

varBody:指令集。可以是XML格式数据,也可以是字符串,流,或者一个无符号整数数组。也可以省略,让指令通过Open方法的URL参数代入。

③ abort 取消当前请求

④ getAllResponseHeaders 获取响应的所有http头

⑤ getResponseHeader 从响应信息中获取指定的http头

以上我给出了一些常用的属性和方法,其他的大家可以参考相关的资料,或许我在今后的课程中会用到时讲解。同时我们还要注意下面的注意点:

1、ResponseBody是二进制的数据,是服务器传来的没有经过任何加工的数据。

2 ResponseText是按照utf-8编码把ResponseBody转换而成,也就是:ResponseText=ByteToStr(ResponseBody,"UTF-8")

本节知识点回向:了解一些概念,HTTP,TCP/IP,XMLHTTP,以及XMLHTTP的常用属性和方法。

我20多年的VBA实践经验,全部浓缩在下面的各个教程中,教程学习顺序:

相关推荐
VBA63375 天前
数组与字典解决方案第三十三讲:工作表函数的应用及内存释放
语言
2401_841495642 个月前
【自然语言处理】基于规则基句子边界检测算法
人工智能·python·自然语言处理·规则·文本·语言·句子边界检测算法
LucianaiB2 个月前
仓颉语言核心技术解析:如何开发高性能服务端应用
职场和发展·高性能·语言·仓颉
魔力之心4 个月前
daily notes[12]
语言
蓝天星空1 年前
ruby 的安装
jvm·python·php·ruby·rails·语言
火龙映天1 年前
Android中判断当前语言是否为繁体中文
android·语言·繁体中文
BQW_1 年前
【极速前进】20240706-24240714:用于Agent的树搜、理解LLM的语种困惑、事实知识抽取微调、Quiet-STaR
llm·agent·agi·语言·事实微调
噜噜不困o1 年前
“八股文”在实际工作中是助力、阻力还是空谈?
语言
爱桥代码的程序媛1 年前
鸿蒙OpenHarmony Native API【Native XComponent】
程序员·api·harmonyos·鸿蒙·openharmony·鸿蒙开发·语言