vba:具有不同类名的getElementsByClassName

时间:2017-08-15 09:41:51

标签: arrays excel vba

我正在处理Excel工作表,该工作表从网站收集数据。关于这个网站的几句话:
- 它与我无关,我无法改变它的影响 - 它应该看起来像一张桌子,但事实并非如此。结构是这样的:

<h4>blabla</h4><span class="address">blabla</span><span class="state_x">blabla</span>
<h4>blabla</h4><span class="address">blabla</span><span class="state_x">blabla</span>
<h4>blabla</h4><span class="address">blabla</span><span class="state_y">blabla</span>

诀窍是“州_?” class,它的名字可以改变(但只有它的结尾)。

我现在在做什么? - 将所有数据收集到阵列中 - 当然我会得到“state_x”和“state_y”数组 - 浏览数组,并将所有内容写入表格

问题: 当我到达“州_?”数组,我已经不知道,它的数据来自哪里。 最好的只有一个“状态”数组,可以从任何“state_?”收集数据。类。当然这段代码不起作用,但要显示逻辑:

Dim state As Variant
Set state = ieApp.Document.getElementsByClassName("state_*")

这怎么可行?感谢任何帮助,请考虑,我是vba的新手。

新信息

我通过分析源HTML代码找到了一些进一步的帮助。每行嵌套在<div class="listitem"> </div>中。是否可以创建一个数组,其中每个元素都是一个完整的“listitem”div,并使用for循环从这些元素中提取数据,如上所示?

每个“listitem”div只能包含一个“state_?”类。所以这样我就不会丢失数据来源的信息。

1 个答案:

答案 0 :(得分:0)

尝试?sd 与选择器,例如querySelectorAll应选择所有具有以文本"*[class^='state_']"开头的类名的元素。有关选择器的更多信息here。 HTH

state_