html文档解析程序,网页数据采集-网页文档解析篇(json/html/xml)-Excel VBA程序开发-ExcelHome技术论坛 -...

本文介绍了如何使用VBA进行HTML文档解析,详细讲解了Document对象的使用,包括根据ID、标签名和类名访问元素的方法,以及通过节点属性和方法获取元素内容和属性值的操作。此外,还提到了获取表格数据的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本帖最后由 liu-aguang 于 2016-10-20 09:38 编辑

HTML文档解析

HTML文档被转化为HTML DOM后,所有的元素都被定义为了对象.我们可以应用这些对象的属性或方法访问自己需要的内容.

Document对象

Document对象就是指整个HTML文档对象, 在节点树处于顶端.它的一些方法与属性可以帮助我们访问(锁定)一个具体的元素.

1. 在VBE中声明Document有两种方法:

前期引用:(需要在VBE"工具"-"引用"-Microsoft HTML Object Library)

Dim oDom As New HTMLDocument

该语句声明一个变量oDom为Document对象.

后期引用:

Set oDom = CreateObject("HTMLFIlE")

在实践中发现前期引用与后期引用有一定的差别:

如前期引用,则不能用Write方法把网页写入;而后期引用不能识别Class(类)

2.网页文本加载, 加载有两种方式, 例:

Sub a()

Set oDom = CreateObject("htmlfile")

oDom.body.innerHTML = "

这是一个段落

"

End Sub

Sub b()

Set oDom = CreateObject("HTMLFIlE")

oDom.write "

这是一个段落

"

End Sub

讨论:

(1)过程a是把网页代码写入oDom的Body标签内.如果写入的网页有

,它会忽略.

(2)过程b会把整个网页写入oDom中(包括

,如果有的话).

(3)两种加载方式最大不同点是:用Write方式加载,它会同时初始化或执行网页中的动态代码.而过程a则不会.

(4)多数情况下,我们采用过程a方式加载网页.

3. Document对象访问元素的方法:

(1)根据元素的ID,Name,TagName,Calss属性访问元素.

语法:

Document.getElementById("id名")                          返回带有指定 ID 的元素。

Document.getElementsByName("元素name值")        VBA中不支持

Document.getElementsByTagName("元素标签名")    返回包含带有指定标签名称的所有元素的节点列表(集合/节点数组)。

Document.getElementsByCalssName("元素Class名")  返回包含带有指定类名的所有元素的节点列表。'必须前期引用

(2)根据Document集合对象访问元素(过时方式,都可以用上面方法替代).

Document.all(i)                       '根据标签在网页中序号访问该元素.

Document.all(name)                '根据标签的name属性访问元素,如果出现多个相同名字,则结果为数组;

Document.all.tags(tagName)    '根据标签名来访问元素,也得到一个数组结果.

例 3.1 根据ID名访问元素内容

Sub getid()

Set oDom = CreateObject("htmlfile")

oDom.body.innerHTML &

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值