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