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值說明

1 Element 代表元素 Element, Text, Comment, ProcessingInstruction, CDATASection, EntityReference
2 Attr 代表屬性 Text, EntityReference
3 Text 代表元素或屬性中的文本內容。 None
4 CDATASection 代表文檔中的 CDATA 部分(不會由解析器解析的文本)。 None
5 EntityReference 代表實體引用。 Element, ProcessingInstruction, Comment, Text, CDATASection, EntityReference
6 Entity 代表實體。 Element, ProcessingInstruction, Comment, Text, CDATASection, EntityReference
7 ProcessingInstruction 代表處理指令。 None
8 Comment 代表注釋。 None
9 Document 代表整個文檔(DOM 樹的根節點)。 Element, ProcessingInstruction, Comment, DocumentType
10 DocumentType 向為文檔定義的實體提供接口 None
11 DocumentFragment 代表輕量級的 Document 對象,能夠容納文檔的某個部分 Element, ProcessingInstruction, Comment, Text, CDATASection, EntityReference
12 Notation 代表 DTD 中聲明的符號。 None


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM