使用 table 标签从网络 table 获取数据

Get data from a web table with table tag

我在 HTML 中有此代码:

<table cellspacing = "0" cellpadding = "0" width = "100%" border="0">
<td class="TOlinha2"><span id="Co">140200586125</span>

我已经有一个 VBA 功能可以访问网站、登录并转到正确的页面。现在我正在尝试在 HTML 中的 table 中使用 td 标签。我想要的值是 140200586125,但我想要很多 td 标签,所以我打算使用 for 循环来获取那些 td 并将它们放在工作表中。

我都试过了:

.document.getElementByClass()

和:

.document.getElementyById()

但都没有用。

感谢您的帮助。我来自巴西,对于任何英文错误,我们深表歉意。

既然您提到您需要检索多个 <td> 标签,那么检索整个集合比使用 getElementById() 一次获取一个标签更有意义。

根据上面的 HTML,这会将 <td> 中的所有 <span> 节点与 class='TOlinha2':

匹配
Dim node, nodeList
Set nodeList = ie.document.querySelectorAll("td.TOlinha2 > span")

For Each node In nodeList
    MsgBox node.innerText     ' This should return the text within the <span>
Next

没有足够的 HTML 来确定 TOlinha2 是否是感兴趣的 table 中所有 tds 的一致 class 名称;并且仅限于此table。如果是,那么您确实可以使用 .querySelectorAll

您可以使用 CSS selector:

ie.document.querySelectorAll(".TOlinha2")

其中 "." 代表 class姓名。

不能 使用 For Each Loop 迭代返回的 NodeList。请参阅我的问题 。 Excel 会崩溃,您将丢失所有未保存的数据。

你必须循环 nodeList 的长度,例如

Dim i As Long
For i = 0 To Len(nodeList) -1
    Debug.Print nodeList(i).innerText    
Next i

有时您需要不同的语法,即:

Debug.Print nodeList.Item(i).innerText 

您可以尝试使用更多符合条件的元素进一步缩小此 CSS 选择器的范围,例如,该元素必须在 tbody 内,即 table,并且前面有 tr( table 行)并有 classname .TOLinha2

ie.document.querySelectorAll("tbody tr .TOlinha2")