vba:getElementsByClassName具有不同的类名称

我正在从一个网站收集数据的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> 

诀窍是“state_?” 类,其名称可以改变(但只有结束)。

我现在在做什么?
– 将所有数据收集到数组中
– 当然我会得到“state_x”和“state_y”数组
– 通过数组,并将所有内容写入表单

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

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

这怎么能工作? 任何帮助表示赞赏,请考虑,我是新vba。

新的信息

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

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

尝试使用select器的querySelectorAll ,例如"*[class^='state_']" ,它应该select所有具有以文本state_开头的类名称的元素。 更多关于select器在这里 。 HTH

 Dim states As IHTMLDOMChildrenCollection Set doc = ie.document Set states = doc.querySelectorAll("*[class^='state_']") If (Not states Is Nothing) Then Dim i For i = 0 To states.Length - 1 Debug.Print states(i).innerHTML Next i End If