如何在指定Etherscan页面通过CSS定位Holders数值?
定位Etherscan页面Holders数值的CSS选择器方案
我看了你提供的HTML结构截图,给你几个能精准定位到Holders数值的可行方案,顺便帮你分析下之前失败的原因:
可行的CSS选择器
基于文本内容定位(直观易读)
tr:has(td:contains("Holders")) td:nth-child(2)这个选择器先找到包含"Holders"文本的单元格所在的整行,再选中该行的第二个单元格(也就是数值所在的位置)。注意:部分工具(比如Puppeteer)需要启用特定设置才能支持
:contains(),如果遇到兼容性问题,可以试试下面的方案。基于元素ID标识(更稳定)
tr[id*="holders"] td:nth-child(2)Etherscan的元素ID通常带有明确的业务标识,Holders对应的行大概率会有包含"holders"的ID。这个选择器会匹配所有ID中包含"holders"字符串的行,再取该行的第二个单元格,稳定性比依赖行位置的选择器高很多。
基于相邻元素定位(适配你之前的思路)
#ContentPlaceHolder1_tr_valuepertoken + tr td:nth-child(2)你之前想用相邻元素定位,但用了jQuery的
.next()语法(不是纯CSS)。这个纯CSS选择器会找到#ContentPlaceHolder1_tr_valuepertoken紧接的下一行(也就是Holders所在的行),再选中该行的第二个单元格,完美契合你之前的思路。
之前选择器失败的原因
- 你用的
.table tr:nth-child(3) td:nth-child(2)依赖固定的行位置,但页面上可能存在多个table,或者行的位置会随着页面更新变化,所以很不稳定,容易失效。 - 第二个选择器
#ContentPlaceHolder1_tr_valuepertoken.next('tr td:nth-child(2))是错误的语法:这是jQuery的方法写法,不是纯CSS选择器,而且括号也没有正确闭合,自然无法生效。
内容的提问来源于stack exchange,提问作者ShittyDeveloper
相关产品推荐
相关产品推荐

