VB下对HTML元素的操作

<!DOCTYPE html>
<html>
<head>
    <title>test</title>
</head>
<body>
<div>
<ul class="lstbox"> 
    <li class="lst_head"><span class="col_1">姓名</span><span class="col_2">邮箱</span><span class="col_3">生日</span></li>
    <li class="lst_row"><span class="col_1">张三</span><span class="col_2"><a href="mailto:zhangsan@web.com" class="email">zhangsan</a></span><span class="col_3">80-5-1</span></li>
    <li class="lst_row"><span class="col_1">李四</span><span class="col_2"><a href="mailto:lisi@web.com" class="email">lisi</a></span><span class="col_3">85-5-1</span></li>
    <li class="lst_row"><span class="col_1">王五</span><span class="col_2"><a href="mailto:wangwu@web.com" class="email">wangwu</a></span><span class="col_3">90-5-1</span></li>
    <li class="lst_row"><span class="col_1">赵六</span><span class="col_2"><a href="mailto:zhaoliu@web.com" class="email">zhaoliu</a></span><span class="col_3">95-5-1</span></li>
</ul>
</div>
</body>
</html>

如上面的页面源码,若要提取出姓名,邮箱和生日,可下面这样做

Private Sub Command1_Click()
    Dim str As String
    Dim li, cd
    Dim c_name As String
    '遍历元素<li>
    For Each li In Dom.Document.getElementsByTagName("li")
        '用判断忽略掉列首名称的<li>行
        If li.classname = "lst_row" Then
            '遍历<li>下的节点
            For Each cd In li.childNodes
                '判断是否为元素节点
                If cd.nodeType <> 3 Then
                    If cd.classname = "col_2" Then
                        '如果是第2列的<span>,那么再用firstChild取出第一个元素节点<a>
                        str = str & cd.firstChild.href & " "
                    Else
                        '其他列直接输出文本
                        str = str & cd.innertext & " "
                    End If
                End If
            Next
            str = str & vbCrLf
        End If
    Next
    Print str
End Sub

其实就很简单的东西,主要是对HTML不是很熟悉,对node和element有点晕,下面是nodeType值说明

1Element代表元素Element, Text, Comment, ProcessingInstruction, CDATASection, EntityReference
2Attr代表属性Text, EntityReference
3Text代表元素或属性中的文本内容。None
4CDATASection代表文档中的 CDATA 部分(不会由解析器解析的文本)。None
5EntityReference代表实体引用。Element, ProcessingInstruction, Comment, Text, CDATASection, EntityReference
6Entity代表实体。Element, ProcessingInstruction, Comment, Text, CDATASection, EntityReference
7ProcessingInstruction代表处理指令。None
8Comment代表注释。None
9Document代表整个文档(DOM 树的根节点)。Element, ProcessingInstruction, Comment, DocumentType
10DocumentType向为文档定义的实体提供接口None
11DocumentFragment代表轻量级的 Document 对象,能够容纳文档的某个部分Element, ProcessingInstruction, Comment, Text, CDATASection, EntityReference
12Notation代表 DTD 中声明的符号。None

转载于:https://www.cnblogs.com/xiii/p/4967953.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值