‘同上,包括对象本身的文本

所以,如果我们要抓取某个网站的所有HTML内容,代码可以这样写:

...... ‘前面已经取得了ieA对象,并打开某URL网页

set doc=ieA.Document

set xDoc=doc. documentElement ‘取得根节点

strX=xDoc.OuterHtml ‘取得所有的HTML内容这种取值的方式不妨可以当成EXCEL的单元格取值:set shDocX=APPLICATION.ACTIVEWORK.ACTIVESHEET ‘从应用程序、工作簿一直定位到当前工作表,这是EXCEL的工作簿对象模型

set rngX=shDocX.Rang(“a1”) ‘取得单元格(其实不一定是一个格子,只要是RANGE类型对象即可)

X=rngX.VALUE ‘取得VALUE值,也可以取只读的TEXT在网页上看到的标记,就是根节点或body之下的标记节点对象(node)。每一个标记节点对象之下都有一个名为ChildNodes的集合,它包含了“直属于本节点下的标记”,听起来有点抽象——这么说吧,就象是文件目录,根目录下的子目录……

HELLO

001

在上面的网页例子里,HTML标记是文档的根节点,是Document的Childnodes集合中的一个成员(还是要提请注意,Document不是节点,是另一种类型对象:上一级文档,但它可以有下级节点集合,正如磁盘可以有下级目录,但它本身不是目录),BODY是根节点的ChildNodes集合中的一个成员,而DIV和P两个节点则是BODY的ChildNodes集合中的两个成员,同样也有自已的Childnoes集合——不过我们很直观地可以看到,它们的下级集合是空的。

用程序代码程序问的过程是怎么样的呢?这种“目录式”层次的方式似乎是很有序的,那么,把上面的内容另存为一个HTML文档,放到硬盘的某个目录下,自已写一段代码做完前面的工作吧,我不代劳了:…….假定你已经用ieA为名的对象浏览了上述网页文件

set doc=ieA.Document

set xbody=doc. body ‘取得body节点

set xI00= xbody.Childnodes.item(0) ‘取得body的第1个节点

set xI01=xbody.Childnodes.item(0) ‘取得bdoy的第2个节点

Msgbox xI00.innerText ‘显示第1个节点(DIV)的文本

Msgbox xI01.outerHtml ‘显示第2个节点(P)的完整内容在VB/VBA/VBS系列的语言中,item是默认方法,可以省略,不过我在这里还是写出来,加深印象。

应该注意的是,文档对象模型中,集合与OFFICE的集合有所不同,首先,集合是从0开始计数的,习惯了OFFICE VBA编程的朋友们一定要注意,不同的对象架构有不同的方式,这里用的是“0集合”,其次,它用的计数属性是Length而不是Count,不要习惯性地打上Childnode.Count查看集合的数量了

除了ChildNodes集合,大家在网页文档对象中还常见到的就是很大气的一种集合:All集合,这是“最糊涂”的一种集合,文档和各级节点都带有这个集合,正如这个名字所示,它是不分层次的,但用起来也很方便:…….

Set doc=ieA.Document

Set xCols=doc.All ;取得文档中的所有节点集合

Set xbCols=doc.body.All ;取得body节点下所有的节点集合虽然任何标记节点都有ALL集合,但我们还是喜欢用DOCUMENT的ALL,原因无它,文档最大,一锅烩的ALL找起来也最合适。

ALL查找是有条件的:如果这个标记没有ID,你无法查到它的名字:

hi,you

excelset tag1=doc.All.item(“myTag”).item(0) ‘返回标记内部ID=myTag的集合并取第一个最初在我个人看来,如果网页中的HTML标记已经有了ID,不如用文档对象的getElementById直接返回一个对象更直接,这个方法不需要经过集合:set tag1=doc. getElementById(“myTag”) ‘返回第一个内部标有ID=myTag的标记不过,ALL集合有一个很方便的特性——至少在初学者看来是很好用的:ID可以挂到ALL集合之下:strX=doc.All.mytag.innerhtml ‘呜呜呜,太好用了另一种方法是以标记名为集合,要用到文档对象的getElementsByName方法:set mydivs=doc. getElementsByName(“div”) ‘取得所有DIV标记,注意还是集合今天先写到这里,下回......不定期休息(补一小段,特别增加,关于FORMS,某位兄弟,下面真的真的没有了,不要期望我上传实例......)关于文档对象的FORMS集合,因为大部分网页的数据提交都是通过FORM标记提交的,因此FORMS集合在没有网页中FORM标记没有ID标记或ID标记重复的情况下,可以用来区分不同的FORM节点:

QUOTE:

SetmyForms=doc.Forms ‘取得所有的FORM标记

Set frmX=myForms.item(0) ‘第1个FORMFORM标记节点代表的对象是很多朋友关心的内容——在网页对象中,它可以发送数据到服务器,使服务器刷新网页(实际上是服务器按某个格式约定发回数据),我们可以把网页的FORM看成是一个远程的函数调用接口,FORM标记中的ACTION指向的URL地址就是函数入口,而FORM标记内的各个INPUT标记节点就是函数的参数,当发出FORM.Submit方法时,就是远程调用函数了,在服务器端,诸如ASP,PHP就是老老实实找FORM的参数,不管你是用GET还是POST:

QUOTE:

frmX.submit ‘是的,只要Submit,相当于用户在页面上按下FORM的发送按键

但它的参数,也就是INPUT标记们怎么办?当然你可以自已修改,访问,唔......如果你分析了已经存在的网页,想从一个空白页面(ABOUT:BLANK)用VBA“凭空”生成FORM和INPUT节点,光凭上面的方法还不够,我们还要“创造节点”(createElement_x)并连入文档对应的位置(appendChild),但这已经是另一个问题了

vba 操作html,VBA IE对象的操作方法相关推荐

  1. ie 不执行回调函时_「Excel VBA操作IE篇」10分钟内设置完成,3句代码打开IE浏览器

    大家好,我是咚腔! Excel VBA还可以 操作IE浏览器,有没有搞错? 没错,可以操作,而且非常好用.因为Excel有强大的数据分析功能. 这有什么关系?关系很大. 现在是数据时代,定期数据获取以 ...

  2. 使用VBA操作文件(1):使用Excel对话框

    转贴自  http://www.excelperfect.com/2009/08/05/handlefileswithvba/ 使用VBA操作文件(1):使用Excel对话框 本专题主要讲述使用VBA ...

  3. VBA操作Excel之获取单元格区域

    VBA操作Excel之获取单元格区域 一.VBA通过索引引用工作表 二.VBA获取单元格区域 三.VBA调用方法参数传值 参考文档 一.VBA通过索引引用工作表 VBA打开工作簿后,通常一个工作簿有若 ...

  4. vba 文件操作服务器,VBA文件及文件夹操作

    VBA文件及文件夹操作 1.VBA操作文件及文件夹 on error resume next下测试 A,在D:\下新建文件夹,命名为folder 方法1:MkDir "D:\folder&q ...

  5. VBA操作Excel之设置单元格属性

    VBA操作Excel简介 一.VBA读写Excel文件 二.VBA设置单元格属性 三.VBA弹出输入和输出窗口 参考文档 一.VBA读写Excel文件 VBA简介及打开Excel文件方法见VBA读写E ...

  6. (转)Excel VBA 操作 Word(入门篇)

    原文地址 本文的对象是:有一定Excel VBA基础,对Word VBA还没有什么认识,想在Excel中通过VBA操作Word还有困难的人. 一.新建Word引用 需要首先创建一个对 Word App ...

  7. Windows编程语言VBA学习(三)——使用VBA操作Excel

    在之前的文章中我们学习了VBA的基本语法,接下来我们就要学习如何使用VBA开发宏命令脚本,如何与Excel进行交互. 我了解的内容仅限于我自己的使用,可能并不系统,还请谅解. 首先我们可能需要操作Sh ...

  8. VBA操作Excel

    VBA基础语法 Function ReadPoint(xlSheet As Worksheet) As Point() ReadPoint = astrPoint Function 函数 End Fu ...

  9. 枚举如何设置空白_2019-07-04 用VBA设置word中shape对象相对位置

    在excelhome上看到一个提问 Excel 请教:用代码插入文本框,不随文字移动.-ExcelVBA程序开发-ExcelHome技术论坛 -​club.excelhome.net 本以为可以通过录 ...

最新文章

  1. 英伟达推出全球首个元宇宙平台,豪砸数亿是为什么?
  2. python在windows 输入和输出文件_Python文件、目录和输入输出操作
  3. 也谈设计模式,实例票据打印 解析 Decorator
  4. Freenas使用小结(一)安装
  5. paip.ecshop邮件模板修改一个密码找回 一个留言回复
  6. Linux uptime命令详解
  7. c语言二级题库pdf,C语言二级考试题库.pdf
  8. Fluent 安装过程
  9. SpringBoot 实现业务校验,这种方式才叫优雅!
  10. 项目沟通管理和项目干系人管理
  11. 计算机网络知识点之五
  12. 计算机科学排行榜2018年,2018本科计算机专业社会影响力排行榜!电子科大实至名归...
  13. 超级微商系统开发,社交电商3.0时代的概念
  14. FineReport之localhost拒绝了我们的连接请求
  15. 宝塔 控制面板如何添加新网站
  16. Android桌面图标布局,android安装运行launcher并修改桌面图标
  17. 全国高速公路一览表_拔剑-浆糊的传说_新浪博客
  18. 如何用一片74LS161和必要的门电路构成一个可控计数器?
  19. [个人笔记]HCIP-Routing Switching-IENP/H12-222
  20. Ubuntu常用防火墙命令

热门文章

  1. ifconfig没有ip地址_虚拟机创建后该如何获取IP地址并访问互联网实用教程
  2. Exchange Server 2016 独立部署/共存部署 (三)—— 安装Exchange程序
  3. ESXI6.7虚拟机配置LACP静态汇聚端口网络负载均衡分流
  4. Docker学习总结(51)——为什么不建议把数据库部署在 Docker 容器内的7大原因?
  5. Maven学习总结(24)——Maven版本管理详解
  6. 过磅系统_集团公司首个过磅计量及销售结算新系统上线试运行
  7. 一个完整的html文件包含哪些标签,HTML基础有哪些单标签
  8. 为什么突然变乱码_9102年了,还不知道Android为什么卡?
  9. 不做别人思想的“跑马场”(人民论坛)
  10. 新零售大潮下 联想与BHG Mall签约共建智慧商城