【发布时间】:2020-09-05 10:36:03
【问题描述】:
我还是 VBA 和数据抓取的新手。我想检查是否有办法在元素集合中选择某些元素。我的 VBA 代码如下:
Sub Refresh()
Dim XMLPage As New MSXML2.XMLHTTP60
Dim HTMLDoc As New MSHTML.HTMLDocument
Dim HTMLTable As MSHTML.IHTMLElementCollection
Dim Price As Variant, Change As Variant, Volume As Variant
Dim HTMLTag As MSHTML.IHTMLElement
XMLPage.Open "GET", Mapping.Range("B2"), False
XMLPage.send
HTMLDoc.body.innerHTML = XMLPage.responseText
Set HTMLTable = HTMLDoc.getElementsByClassName("stockinfocol1")
For Each HTMLTag In HTMLTable
Debug.Print HTMLTag.innerText
Next HTMLTag
End Sub
debug.print 的结果如下:
最后交易股价 1.200
变化 -0.030 / -2.44%
成交量 1,291,800
日范围 1.190 - 1.250
最后交易日期 2020-05-19
备注
但是,我只需要此集合中的某些元素(例如:最后交易的股票价格和交易量)。有没有办法执行 For each 和 IF 语句来筛选我想要的元素?
HTML 代码在这里供您参考:
<div class="stockinfocol1"><div title="AIMS APAC REIT Share Price" class="stockinfocol1row1"><span class="label">Last Traded Share Price </span><span class="value red">1.200</span></div><div class="stockinfocol1row"><span class="label">Change </span><span class="value red" label="change">-0.030 / -2.44%</span></div><div title="AIMS APAC REIT Volume Traded" class="stockinfocol1row"><span class="label">Volume Traded </span><span class="value" label="volume">1,218,700</span></div><div title="AIMS APAC REIT Day Price Range" class="stockinfocol1row"><span class="label">Day Range </span><span class="value" label="Day Range">1.190 - 1.250</span></div><div title="AIMS APAC REIT Last Traded Date" class="stockinfocol1row"><span class="label">Last Traded Date </span><span class="value" label="Last Traded Date">2020-05-19</span></div><div title="AIMS APAC REIT Remarks" class="stockinfocol1row"><span class="label">Remarks </span><span class="value" label="Remarks"> </span></div></div>
【问题讨论】:
-
可能是更好的方法,但您可以执行
If HTMLElement.innertext Like "Last Traded*" Then 'Do something ElseIf HTMLElement.innertext Like "Volume Traded*" Then 'Do something ElseIf...等类似的操作。
标签: html vba loops if-statement screen-scraping