如何使用Excel VBA从网站获取数据

我正在尝试编写VBA代码来从网站上获取产品的价格。 为此,我在VBA参考中打开了“Microsoft HTML Object Library”和“Microsoft Internet Controls”。 但是,当我开始search附加价格的项目时,代码失败了。 感谢任何人都可以提供解决scheme。

以下是我想从中复制价格的示例网页的链接。 链接

以下是我的初始代码:

Sub Update() Dim IE As New InternetExplorer IE.Visible = False IE.navigate "http://www.chemistwarehouse.com.au/buy/36985/Reach-Dentotape-Waxed-20m" Do DoEvents Loop Until IE.readyState = READYSTATE_COMPLETE Dim Doc As HTMLDocument Set Doc = IE.document Dim getprice As String getprice = Trim(Doc.getElementsByTagName("div class="Price" itemprop="price"").innerText) Worksheets("Sheet1").Range(C1).Value = getprice End Sub 

函数getElementsByTagName()需要一个标签名称作为参数:例如getElementsByTagName("div")

尝试getElementsByClassName()而不是:

 getprice = Trim(Doc.getElementsByClassName("Price").Item.innerText) 

上面的代码有几个问题。

问题1

getprice = Trim(Doc.getElementsByTagName("div class="Price" itemprop="price"").innerText)

这: div class="Price" itemprop="price"不是一个TagName。 TagNames就像Input,IMG,Anchors等等。但是,我们可以看到您感兴趣的价格元素的Class属性。我们可以通过以下操作来改变如何select这个元素:

getprice = Trim(Doc.getElementsByClassName("Price")(0).innerText)

您可能会注意到(0)在元素select结束时。 这是为了指示Price ClassName集合正在被选中的元素。 getElement ByClassName返回多个元素,第一个元素为0。

问题2

Worksheets("Sheet1").Range(C1).Value = getprice

我不在任何地方引用C1 。 引用特定单元格的一种方法是使用String来表示范围。 从你的代码中变成:

Worksheets("Sheet1").Range("C1").Value = getprice