我正在尝试编写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
答案 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