我目前正在尝试在下面的代码中获取数字1780:
<span style="font-size: smaller;" data-bind="text: ' (' + filtered() + '
retrieved)', visible: filterVisible()"> (1780 retrieved)</span>
我将运行一个宏(VBA),该宏将仅在检索到的项目数少于2000的情况下从此站点下载文件。该数目可以根据excel的输入值而改变,因此我相信我必须使用通配符。现在,您如何只获得数字1780?
答案 0 :(得分:1)
只需获取元素的内容,然后将所有非数字替换为空。
console.log(document.querySelector('span').textContent.replace(/\D/g, ''));
<span style="font-size: smaller;" data-bind="text: ' (' + filtered() + '
retrieved)', visible: filterVisible()"> (1780 retrieved)</span>
如果要使用完整的表达式,则可以为初始括号之后但在“检索到的”文本之前的任何数字序列定义一个匹配组。
console.log(document.querySelector('span').textContent.match(/\((\d+) retrieved\)/)[1]);
<span style="font-size: smaller;" data-bind="text: ' (' + filtered() + '
retrieved)', visible: filterVisible()"> (1780 retrieved)</span>
答案 1 :(得分:0)
假设从vba运行,则可以将CSS属性=值选择器与包含运算符一起使用,然后在节点的innerText
上使用split and replace。我可能还想使用正则表达式提取数字。
Dim s As String, arr() As String, num As Long
s = ie.document.querySelector("span[data-bind*='retrieved']").innerText
arr = Split(s, Chr$(32))
num = Replace$(arr(0), "(", vbNullString)