如何使用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