如何在下面的示例代码中仅提取数字1780

时间:2019-10-21 18:22:24

标签: javascript html vba web-scraping

我目前正在尝试在下面的代码中获取数字1780:

<span style="font-size: smaller;" data-bind="text: ' (' + filtered() + ' 
retrieved)', visible: filterVisible()"> (1780 retrieved)</span>

我将运行一个宏(VBA),该宏将仅在检索到的项目数少于2000的情况下从此站点下载文件。该数目可以根据excel的输入值而改变,因此我相信我必须使用通配符。现在,您如何只获得数字1780?

2 个答案:

答案 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)