Html 从div、class和span元素抓取Web
我想从中提取数据。相关数据嵌入本代码中:Html 从div、class和span元素抓取Web,html,vba,excel,web-scraping,Html,Vba,Excel,Web Scraping,我想从中提取数据。相关数据嵌入本代码中: 943.76 0.07% ▲ 9,922.82 -0.04% ▼ 188.02 0.18% ▲ 13,153.1 -0.3% ▼ 117.81 1.15% ▲ 2,213.49 -0.49% ▼ 201.36 0.01% ▲ 439.28 0.41% ▲ 234.06 -1.05% ▼ 2,051.35 -1.05% ▼ 349.36 1.54% ▲ 2,121.09 -1.03% ▼ 189.48 1.08% ▲
943.76
0.07% ▲
9,922.82
-0.04% ▼
188.02
0.18% ▲
13,153.1
-0.3% ▼
117.81
1.15% ▲
2,213.49
-0.49% ▼
201.36
0.01% ▲
439.28
0.41% ▲
234.06
-1.05% ▼
2,051.35
-1.05% ▼
349.36
1.54% ▲
2,121.09
-1.03% ▼
189.48
1.08% ▲
1,228.91
0.35% ▲
1,055.92
2.79% ▲
205.43
2.17% ▲
3,842.7
1.63% ▲
477.39
1.45% ▲
327.07
0.12% ▲
244.56
0.05% ▲
这很容易使用:
您已经很好地解释了您的目标:
我希望内容标题和返回值包含在索引详细信息中
班级
① <代码>返回值是一个类,因此您可以执行以下操作:
.index-detail .return-value
,即获取中包含的所有返回值类名称元素。索引详细信息类名称
对于显示的HTML,您可以缩写为。返回值
② contenttitle
是一个属性,需要稍微不同的语法来选择:
.index-detail [contenttitle]
它可以缩写,用于将HTML显示为:[contenttitle]
以下是两个选择器的示例视图:
① 返回值
② [contenttitle]
VBA:
那么,这如何转化为VBA呢?嗯,文档有一个方法。您使用html
变量创建了一个实例,并用
html.body.innerHTML = xmlHttp.responseText
假设它返回了您需要的HTML,那么您只需使用:
Dim contentTitles As Object, returns As Object
Set contentTitles = html.querySelectorAll("[contenttitle]")
Set returns = html.querySelectorAll(".return-value")
Dim currentNode As Long
For currentNode = 0 To contentTitles.Length - 1
Debug.Print contentTitles(currentNode).innerText
'Debug.Print contentTitles.item(currentNode).innerText '<==Or potentially this syntax
Debug.Print returns(currentNode).innerText
'Debug.Print returns.item(currentNode).innerText '<==Or potentially this syntax
Next currentNode
Dim contentTitles作为对象,作为对象返回
Set contentTitles=html.querySelectorAll(“[contenttitle]”)
Set returns=html.querySelectorAll(“.return value”)
将当前节点变长
对于currentNode=0到contentTitles.Length-1
调试。打印内容标题(currentNode)。innerText
'Debug.Print contentTitles.item(currentNode).innerText'getElementsByTagName()?您是为其他工具打开的还是只想在vba中执行此操作?因为excel不是为刮削而构建的,并且有专用工具可用。如果你愿意,我可以回答to@Vicky我以前是用R来做这件事的,但是在我的办公室里有了新的软件设置,我们不能安装任何东西,我们被迫使用excel vba来完成所有事情。@capm您不需要安装需要管理员许可的软件。现在查看我的答案,您也可以在excel中导出输出。