首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >从带有表标记的web表中获取数据

从带有表标记的web表中获取数据
EN

Stack Overflow用户
提问于 2015-08-20 12:05:41
回答 2查看 102关注 0票数 0

我在HTML中有以下代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<table cellspacing = "0" cellpadding = "0" width = "100%" border="0">
<td class="TOlinha2"><span id="Co">140200586125</span>

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

我两次都试过:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
.document.getElementByClass()

以及:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
.document.getElementyById()

但两者都不起作用。

感谢你的帮助。我来自巴西,对任何英语错误感到抱歉。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-06-16 23:04:19

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

你可以用CSS选择器

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ie.document.querySelectorAll(".TOlinha2")

"."的意思是className。

不能使用For Each Loop在返回的NodeList上迭代。见我的问题Excel试图检查DispStaticNodeList时崩溃。Excel将崩溃,您将丢失任何未保存的数据。

你必须循环nodeList的长度。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Dim i As Long
For i = 0 To Len(nodeList) -1
    Debug.Print nodeList(i).innerText    
Next i

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Debug.Print nodeList.Item(i).innerText 

您可以寻求进一步缩小这个CSS选择器,使用更多的限定元素,例如,元素必须在tbody (即table )内,并由一个tr (表行)所取代,并且具有类名.TOLinha2

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ie.document.querySelectorAll("tbody tr .TOlinha2")
票数 1
EN

Stack Overflow用户

发布于 2015-08-20 12:30:27

既然您提到需要检索多个<td>标记,那么检索整个集合就更有意义了,而不是使用getElementById()一次获取它们。

基于上面的HTML,这将使<td>中的所有<td>节点与class='TOlinha2'相匹配。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32127367

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文