<!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 |
