如何使用Excel VBA从Java网页同class动态表格中提取Version字段数据
解决方法
核心逻辑是放弃依赖元素索引的定位方式,改为通过文本特征匹配定位字段,完全不受block-indent区块内表格数量变化影响。
实现代码
Dim innerContent As Object, literalTds As Object, td As Object ' 获取根容器 Set innerContent = ie.document.getElementById("InnerContent") ' 获取容器内所有td元素 Set literalTds = innerContent.getElementsByTagName("td") For Each td In literalTds ' 匹配Version字段标识 If Trim(td.innerText) = "Version:" And td.className = "Literal" Then ' 取相邻Field单元格的显示值(当前版本03) Sheets("Sheetname").Range("E5") = td.NextSibling.innerText ' 如果需要提取旧版本号02,取title属性提取即可: ' Dim oldVer As String ' oldVer = Split(td.NextSibling.getAttribute("title"), ":")(1) ' oldVer = Trim(Replace(oldVer, "'", "")) Exit For End If Next
方案说明
- 该方法直接通过
Version:文本匹配字段位置,无论前面新增多少个动态表格,都能精准定位到目标字段 - 如果要兼容其他字段提取,只需要修改匹配的文本内容即可,比如要取
Last Amended值,把匹配条件改成Trim(td.innerText) = "Last Amended:"即可 - 相比按索引定位的方式,兼容性和稳定性提升明显,页面小范围结构调整不会导致抓取失效
内容的提问来源于stack exchange,提问作者SelpaqM
相关产品推荐
相关产品推荐

