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

时间:2017-03-06 13:40:22

标签: excel vba excel-vba automation

我正在尝试编写VBA代码以从网站上提取产品的价格。为此,我打开了" Microsoft HTML对象库"和#34; Microsoft Internet Controls"在VBA参考中。但是,当我开始搜索附加价格的项目时,代码失败了。感谢是否有人能为其提供解决方案。

以下是我要复制价格的示例网页的链接。 Link

以下是我的初始代码:

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

2 个答案:

答案 0 :(得分:0)

函数getElementsByTagName()仅需要标记名称作为参数: 例如getElementsByTagName("div")

请尝试getElementsByClassName()

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

答案 1 :(得分:0)

上述代码存在一些问题。

第1期

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

此: div class="Price" itemprop="price"不是TagName。 TagNames是输入,IMG,锚点等等。但是,我们可以看到您感兴趣的价格元素的Class属性。我们可以通过以下方式更改我们选择此元素的方式:

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

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

第2期

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

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

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

相关问题