控制网页frame vba_VBA网络通信基础
大家好,我们今日讲解"网络通信基础",这节内容是"VBA信息获取与处理"教程中第七个专题"VBA与HTTP网络通讯"的第一节。由于涉及到文章的审核相关问题(设计到一些网址的话审核通过十分困难),关于网抓的内容在平台上发表的不全,平台发表的代码有些运行不了,这是因为缺少某些自定义函数的过程,在其他的章节中。如果有需要学习网抓的朋友可以联络我分享这套教程。其中的程序文件是非常值得拥有的代码源码。
第一节 网络通信基础
在当今的时代,网络是无所不在的,在互联网的基础上开始了物联网的起步。从电子邮件的发送,到无人驾驶技术;从手机的智能到宇宙的探测,通信无所不能。在探讨网络通信时我们有必要理解几个概念,在VBA的网络应用中,有必要对网络的通信进行必要的模拟认识。
1 几个基本概念的讲解(WEB, HTTP, TCP/IP)
1)WEB 即World Wide Web的缩写,中文名翻译为:全球广域网或万维网
它是一种基于超文本和HTTP的、全球性的、动态交互的、跨平台的分布式图形信息系统。是建立在Internet上的一种网络服务,为浏览者在Internet上查找和浏览信息提供了图形化的、易于访问的直观界面,其中的文档及超级链接将Internet上的信息节点组织成一个互为关联的网状结构。
Web 非常流行的一个很重要的原因就在于它可以在一页上同时显示色彩丰富的图形和文本的性能。在Web之前Internet上的信息只有文本形式。Web可以提供将图形、音频、视频信息集合于一体的特性。
Web 1.0时代开始于1994年,其主要特征是大量使用静态的 HTML 网页来发布信息,并开始使用浏览器来获取信息,这个时候主要是单向的信息传递。通过Web万维网,互联网上的资源,可以在一个网页里比较直观地表示出来,而且资源之间,在网页上可以任意链接。Web1.0 只解决了人对信息搜索、聚合的需求,而没有解决人与人之间沟通、互动和参与的需求。
Web 2.0 始于 2004 年 3 月,在Web2.0中,软件被当成一种服务,Internet从一系列网站演化成一个成熟的为最终用户提供网络应用的服务平台,强调用户的参与、在线的网络协作、数据储存的网络化、社会关系网络、RSS应用以及文件的共享等成为了Web2.0发展的主要支撑和表现。Web2.0模式大大激发了创造和创新的积极性,使Internet重新变得生机勃勃。
可以说WEB使得全世界的人们以史无前例的巨大规模相互交流。相距遥远的人们,甚至是不同年代的人们可以通过网络来发展亲密的关系或者使彼此思想境界得到升华,甚至改变他们对待小事的态度以及精神。情感经历、政治观点、文化习惯、表达方式、商业建议、艺术、摄影、文学都可以以人类历史上从来没有过的低投入实现数据共享。信息保存方式不是使用人们熟悉的方式如图书馆、出版物那样实在的东西。信息传播是经由万维网和英特网来实现,而无须被搬运具体的书卷,或者手工的或实物的复制而限制。而且数字储存方式的优点是,你可以比查阅图书馆或者实在的书籍更容易有效率地查询网络上的信息资源。
2) HTTP 是HyperText Transfer Protocol的缩写,翻译为超文本传输协议。
万维网WWW技术的出现使得因特网得以超乎想象的速度迅猛发展。这项基于TCP/IP的技术在短短的十年时间内迅速成为已经发展了几十年的Internet上的规模最大的信息系统,它的成功归结于它的简单、实用。在WWW的背后有一系列的协议和标准支持它完成如此宏大的工作,这就是Web协议族,其中就包括HTTP超文本传输协议。
HTTP是应用层协议,同其他应用层协议一样,是为了实现某一类具体应用的协议,并由某一运行在用户空间的应用程序来实现其功能。HTTP是一种协议规范,这种规范记录在文档上,为真正通过HTTP协议进行通信的HTTP的实现程序。
HTTP诞生之初主要是应用于WEB端内容获取,那时候内容还不像现在这样丰富,排版也没那么精美,用户交互的场景几乎没有。对于这种简单的获取网页内容的场景,HTTP表现得还算不错。但随着互联网的发展和WEB2.0的诞生,更多的内容开始被展示(更多的图片文件),排版变得更精美(更多的CSS),更复杂的交互也被引入(更多的jS)。用户打开一个网站首页所加载的数据总量和请求的个数也在不断增加。
3)TCP/IP是Transmission Control Protocol/Internet Protocol的缩写,翻译为传输控制协议/网际协议,是指能够在多个不同网络间实现信息传输的协议簇。
TCP/IP传输协议对互联网中各部分进行通信的标准和方法进行了规定。并且,TCP/IP传输协议是保证网络数据信息及时、完整传输的两个重要的协议。TCP/IP传输协议是严格来说是一个四层的体系结构,应用层、传输层、网络层和数据链路层都包含其中。
TCP 用于应用程序之间的通信。当应用程序希望通过 TCP 与另一个应用程序通信时,它会发送一个通信请求。这个请求必须被送到一个确切的地址。在双方"握手"之后,TCP 将在两个应用程序之间建立一个全双工 (full-duplex) 的通信。这个全双工的通信将占用两个计算机之间的通信线路,直到它被一方或双方关闭为止。
IP 用于计算机之间的通信。IP 是无连接的通信协议。它不会占用两个正在通信的计算机之间的通信线路。这样,IP 就降低了对网络线路的需求。每条线可以同时满足许多不同的计算机之间的通信需要。通过 IP,消息(或者其他数据)被分割为小的独立的包,并通过因特网在计算机之间传送。IP 负责将每个包路由至它的目的地。
TCP/IP协议意味着 TCP 和 IP 在一起协同工作。TCP 负责应用软件(比如你的浏览器)和网络软件之间的通信。IP 负责计算机之间的通信。TCP 负责将数据分割并装入 IP 包,然后在它们到达的时候重新组合它们。IP 负责将包发送至接受者。
2 网络通信的实现步骤
由以上的名词解释我们可以看出,通过TCP/IP的通信规格可以让我们的计算机进行网络通信;HTTP协议架起了客户端和服务器之间的文档或数据的交互桥梁,通过以上两个协议就可以让我们的计算机和外界有了联络的可能。
1)通信的过程分析
一般而言,通讯是静态的。服务器在等待浏览器的请求之前,是不会主动做任何事情的。现在页面很多动态实时的效果,其实还是我们浏览器,不停的向服务器发送请求,服务器返回消息再更新页面的结果,例如AJAX技术;或者是首次请求后,通讯并没有断开,服务器源源不断的往浏览器发送更新数据,这就是传说中的长连接技术。
通常情况下,当我们的浏览器,通过域名,访问了某个服务器,会进到服务器的门户主页面中。当我们点击门户页面的某个超链接或者点击某个提交按钮后,要求服务器进一步返回我们需要的某个资源文档,或者执行我们提交给它的某些命令。其实,我们刚才点击的超链接或按钮,就蕴含着我们要获取的文档或者执行程序的路径,这个路径统称为URL——统一资源定位符。HTTP通讯中,这个路径的格式一般为:
HTTP://域名:端口/文档或程序的全路径?参数。
端口就是服务器某个特定进程来处理客户端发来的消息,默认为80,可以先不用去理解这个名词。文档或程序路径是相对路径。服务器也是一台计算机,上面除了存放资源文件,还存放着维护服务器的软件,因此资源文档可能并不存放在其根目录上。
用于传递浏览器向服务器发送的请求参数,可有多个参数,用"&"符号隔开,每个参数的名和值用"="符号隔开,例如:http://www.baidu.com/s?ie=utf-8&wd=苹果,就是浏览器向百度服务器发送查询参数,查询关键字是苹果的数据,并请求按utf-8的内码进行返回。请注意,URL里面有时候是不支持英文和数字以外的字符的,这时候就需要URLENCODE的函数去转换。
服务器接收浏览器发来的HTTP请求,并翻译识别请求中的消息并进行权限校检,进而识别请求中的URL并翻译成服务器的一个文档名称并按请求的内容进行返回;或者将将请求翻译为某个程序名称,并传递参数后按请求的规定执行它,并将结果返回。
2)实现网络通信的步骤 典型的HTTP事务处理处理流程分以下几个步骤:
(1)客户与服务器建立连接;
(2)客户向服务器提出请求;
(3)服务器接受请求,并根据请求返回相应的文件作为应答;
(4)客户与服务器关闭连接。
HTTP规范定义了9种请求方法,每种请求方法规定了客户和服务器之间不同的信息交换方式,常用的请求方法是GET和POST。
HTTP报文由从客户机到服务器的请求和从服务器到客户机的响应构成。
请求报文格式如下:请求行 - 通用信息头 - 请求头 - 实体头 - 报文主体
服务器将根据客户请求完成相应操作,并以应答块形式返回给客户,最后关闭连接。
应答报文格式如下:状态行 - 通用信息头 - 响应头 - 实体头 - 报文主体
好了,这讲的内容就到这里,希望大家通过对这讲内容的了解,能对网络通信过程有个认识。
本节知识点回向:
什么是WEB?什么是HTTP?什么是TCP/IP?网络通信的步骤是怎么样的?
积木编程的思路内涵:
在我的系列书籍中一直在强调"搭积木"的编程思路,这也是学习利用VBA的主要方法,特别是职场人员,更是要采用这种方案。其主要的内涵:
1 代码不要自己全部的录入。你要做的是把积木放在合适的位置然后去修正代码,一定要拷贝,从你的积木库中去拷贝,然后修正代码,把时间利用到高效的思考上。
2 建立自己的"积木库"。平时在学习过程中,把自己认为有用的代码放在一起,多积累,在用到的时候,可以随时拿来。你的积木库资料越多,你做程序的思路就会越广。
VBA的应用界定
VBA是利用Office实现个人小型办公自动化的有效手段(工具)。这是我对VBA的应用界定。在取代OFFICE新的办公软件没有到来之前,谁能在数据处理方面做到极致,谁就是王者。其中登峰至极的技能非VBA莫属!
我记得20年前自己初学VBA时,那时的资料甚少,只能看源码自己琢磨,真的很难。20年过去了,为了不让学习VBA的朋友重复我之前的经历,我根据自己多年VBA实际利用经验,推出了六部VBA专门教程:
第一套:VBA代码解决方案 是VBA中各个知识点的讲解,教程共147讲,覆盖绝大多数的VBA知识点,初学必备;
第二套:VBA数据库解决方案 数据库是数据处理的专业利器,教程中详细介绍了利用ADO连接ACCDB和EXCEL的方法和实例操作,适合中级人员的学习。
第三套:VBA数组与字典解决方案 数组和字典是VBA的精华,字典是VBA代码水平提高的有效手段,值得深入的学习,是初级及中级人员代码精进的手段。
第四套:VBA代码解决方案之视频 是专门面向初学者的视频讲解,可以快速入门,更快的掌握这门技能。这套教程是第一套教程的视频讲解,听元音更易接受。
第五套:VBA中类的解读和利用 这是一部高级教程,讲解类的虚无与肉身的度化,类的利用虽然较少,但仔细的学习可以促进自己VBA理论的提高。这套教程的领会主要是读者的领悟了,领悟一种佛学的哲理。
第六套教程:《VBA信息获取与处理》,这是一部高级教程,涉及范围更广,实用性更强,面向中高级人员。教程共二十个专题,包括:跨应用程序信息获得、随机信息的利用、电子邮件的发送、VBA互联网数据抓取、VBA延时操作,剪切板应用、Split函数扩展、工作表信息与其他应用交互,FSO对象的利用、工作表及文件夹信息的获取、图形信息的获取以及定制工作表信息函数等等内容。
大家可以根据以上资料1→3→2→6→5或者是4→3→2→6→5的顺序逐渐深入的逐渐学习。教程提供讲解的同时提供了大量的积木,如需要可以WeChat: NZ9668
学习VBA是个过程,也需要经历一种枯燥的感觉
如太白诗云:众鸟高飞尽,孤云独去闲。相看两不厌,只有敬亭山。学习的过程也是修心的过程,修一个平静的心。在代码的世界中,心平静了,心情好了,身体自然而然就好。心静则正,内心里没有那么多邪知邪见,也就没有那么多妄想。利人就是利己。这些教程也是为帮助大家起航,助上我自己之力,我的上述教程是我多的经验的传递,
"水善利万物而不争",绵绵密密,微则无声,巨则汹涌。学习亦如此,知道什么是自己所需要的,不要蜷缩在一小块自认为天堂的世界里,待到暮年时再去做自欺欺人的言论。要努力提高自己,用一颗充满生机的心灵,把握现在,这才是进取。越是有意义的事情,困难会越多。愿力决定始终,智慧决定成败。不管遇到什么,都是风景。看淡纷争,看轻得失。茶,满也好,少也好,不要计较;浓也好,淡也好,其中自有值得品的味道。去感悟真实的时间,静下心,多学习,积累福报。而不是天天混日子,也不是天天熬日子。在后疫情更加严峻的存量残杀世界中,为自己的生存进行知识的储备,特别是新知识的储备。学习时微而无声,利用时则巨则汹涌。
每一分收获都是成长的记录,怎无凭,正是这种执着,成就了朝霞的灿烂。最后将一阙词送给致力于VBA学习的朋友,让大家感受一下学习过程的枯燥与执着:
浮云掠过,暗语无声,
唯有清风,惊了梦中啼莺。
望星,疏移北斗,
奈将往事雁同行。
阡陌人,昏灯明暗,
忍顾长亭。
多少VBA人,
暗夜中,悄声寻梦,盼却天明。
怎无凭!