ZetCode

VBScript GetElementsByTagName 方法

最后修改于 2025 年 4 月 9 日

VBScript 中的 GetElementsByTagName 方法是 DOM (文档对象模型) 接口的一部分。它从 HTML 或 XML 文档中检索具有指定标签名的所有元素。此方法返回一个可以迭代的元素集合。它常用于网页抓取和文档操作。

GetElementsByTagName 可以在不知道元素 ID 或类名的情况下实现高效的元素选择。它同时适用于 HTML 和 XML 文档。本教程将通过实际示例介绍 GetElementsByTagName 的用法。

GetElementsByTagName 方法概述

GetElementsByTagName 方法接受一个参数:要搜索的标签名。它返回一个匹配指定标签的元素集合。该方法在 VBScript 的文档对象和单个元素节点上均可用。

主要功能包括 HTML 文档中的不区分大小写匹配以及对通配符选择的支持。它会搜索其被调用的元素的所有后代元素。理解此方法有助于创建健壮的文档处理脚本。

基本标签名选择

此示例演示了 GetElementsByTagName 选择所有段落元素的、最简单的用法。它展示了如何访问返回的集合并显示元素内容。该脚本在内存中处理 HTML 字符串。

basic_tag_selection.vbs
Set htmlDoc = CreateObject("htmlfile")
htmlDoc.write "<html><body><p>First paragraph</p><p>Second paragraph</p></body></html>"

Set paragraphs = htmlDoc.getElementsByTagName("p")
For Each para In paragraphs
    WScript.Echo para.innerText
Next

Set htmlDoc = Nothing

该脚本创建了一个包含两个段落的 HTML 文档。GetElementsByTagName 返回所有段落元素。循环显示每个段落的文本内容。这演示了基于标签的基本元素选择。

访问元素属性

此示例展示了如何从通过标签名选定的元素中检索属性。它演示了如何访问锚点标签的 href 属性。该脚本处理一个包含链接的简单 HTML 文档。

element_attributes.vbs
Set htmlDoc = CreateObject("htmlfile")
htmlDoc.write "ExampleGoogle"

Set links = htmlDoc.getElementsByTagName("a")
For Each link In links
    WScript.Echo "Text: " & link.innerText & ", Href: " & link.href
Next

Set htmlDoc = Nothing

该脚本创建了一个包含两个锚点标签的 HTML 文档。GetElementsByTagName 选择所有锚点元素。循环显示每个链接的文本和 URL。这展示了如何使用元素属性。

嵌套元素选择

此示例演示了如何选择特定容器内的元素。它展示了如何将 GetElementsByTagName 的范围限制在 div 元素内。该脚本处理一个具有嵌套结构的 HTML 文档。

nested_selection.vbs
Set htmlDoc = CreateObject("htmlfile")
htmlDoc.write "

Content paragraph

Outside paragraph

" Set contentDiv = htmlDoc.getElementById("content") Set contentParagraphs = contentDiv.getElementsByTagName("p") For Each para In contentParagraphs WScript.Echo "Content paragraph: " & para.innerText Next Set htmlDoc = Nothing

该脚本创建了一个包含 div 内部和外部段落的 HTML 文档。在 div 元素上调用 GetElementsByTagName 以仅选择其子段落。这演示了范围限定的元素选择。

处理表格

此示例展示了如何使用 GetElementsByTagName 处理 HTML 表格。它演示了如何选择表格行和单元格以提取表格数据。该脚本处理一个简单的 HTML 表格结构。

table_processing.vbs
Set htmlDoc = CreateObject("htmlfile")
htmlDoc.write "<html><body><table><tr><td>Cell 1</td><td>Cell 2</td></tr><tr><td>Cell 3</td><td>Cell 4</td></tr></table></body></html>"

Set rows = htmlDoc.getElementsByTagName("tr")
rowNum = 1

For Each row In rows
    Set cells = row.getElementsByTagName("td")
    cellText = ""
    For Each cell In cells
        cellText = cellText & cell.innerText & " | "
    Next
    WScript.Echo "Row " & rowNum & ": " & cellText
    rowNum = rowNum + 1
Next

Set htmlDoc = Nothing

该脚本创建了一个包含简单表格的 HTML 文档。GetElementsByTagName 首先选择所有表格行,然后选择每行中的单元格。嵌套循环处理表格结构以显示单元格内容。这展示了分层元素处理。

选择多个标签类型

此示例演示了如何在一次操作中选择多种元素类型。它展示了如何将通配符字符 (*) 与 GetElementsByTagName 结合使用。该脚本处理一个包含各种元素的 HTML 文档。

wildcard_selection.vbs
Set htmlDoc = CreateObject("htmlfile")
htmlDoc.write "<html><body><h1>Title</h1><p>Paragraph</p><div>Division</div></body></html>"

Set allElements = htmlDoc.getElementsByTagName("*")
For Each elem In allElements
    WScript.Echo "Element: " & elem.tagName & ", Content: " & elem.innerText
Next

Set htmlDoc = Nothing

该脚本创建了一个包含各种元素的 HTML 文档。GetElementsByTagName("*") 选择文档中的所有元素。循环显示每个元素的标签名和内容。这演示了全面的文档遍历。

来源

DOM 文档

在本文中,我们探讨了 VBScript 中的 GetElementsByTagName 方法,涵盖了其用法和实际应用。从基本的元素选择到复杂的文档遍历,这些示例展示了强大的 HTML 处理能力。有了这些知识,您可以改进您的网页抓取和文档操作脚本。

作者

我叫 Jan Bodnar,是一名热情的程序员,拥有多年的编程经验。我自 2007 年以来一直在撰写编程文章。到目前为止,我已撰写了 1400 多篇文章和 8 本电子书。我在编程教学方面拥有八年以上的经验。

列出所有 VBScript 教程