我在HTML中有以下代码:
<table cellspacing = "0" cellpadding = "0" width = "100%" border="0">
<td class="TOlinha2"><span id="Co">140200586125</span>
我已经有了一个访问网站、登录并转到正确页面的VBA函数。现在,我试图将td
标记放在HTML表中。我想要的值是140200586125
,但是我需要很多td
标记,所以我打算使用一个for循环来获取这些td
,并将它们放在工作表中。
我两次都试过:
.document.getElementByClass()
以及:
.document.getElementyById()
但两者都不起作用。
感谢你的帮助。我来自巴西,对任何英语错误感到抱歉。
发布于 2018-06-16 23:04:19
没有足够的HTML来确定TOlinha2
是否是感兴趣表中所有tds的一致类名;并且仅限于此表。如果是的话,那么您确实可以使用.querySelectorAll
你可以用CSS选择器
ie.document.querySelectorAll(".TOlinha2")
"."
的意思是className。
不能使用For Each Loop
在返回的NodeList上迭代。见我的问题Excel试图检查DispStaticNodeList时崩溃。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
(表行)所取代,并且具有类名.TOLinha2
。
ie.document.querySelectorAll("tbody tr .TOlinha2")
发布于 2015-08-20 12:30:27
既然您提到需要检索多个<td>
标记,那么检索整个集合就更有意义了,而不是使用getElementById()
一次获取它们。
基于上面的HTML,这将使<td>
中的所有<td>
节点与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
https://stackoverflow.com/questions/32127367
复制相似问题