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

如何使用Excel VBA从网站中提取数据,vba,excel,automation,Vba,Excel,Automation,我试图编写VBA代码,从网站上获取产品的价格。为此,我在VBA引用中打开了“Microsoft HTML对象库”和“Microsoft Internet控件”。然而,当我开始搜索附加价格的项目的名称时,代码失败了。如果有人能提供解决方案,我们将不胜感激 下面是我想从中复制price的示例网页链接。 以下是我的初始代码: Sub Update() Dim IE As New InternetExplorer IE.Visible = False IE.navigate "http://

我试图编写VBA代码,从网站上获取产品的价格。为此,我在VBA引用中打开了“Microsoft HTML对象库”和“Microsoft Internet控件”。然而,当我开始搜索附加价格的项目的名称时,代码失败了。如果有人能提供解决方案,我们将不胜感激

下面是我想从中复制price的示例网页链接。

以下是我的初始代码:

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()
只需要标记名作为参数: e、 g.
getElementsByTagName(“div”)

请改为尝试
getElementsByClassName()

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

函数
getElementsByTagName()
只需要标记名作为参数: e、 g.
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”
不是标记名。标记名是输入、IMG、锚等。但是,我们可以看到您感兴趣的price元素的
Class
属性。我们可以通过以下操作更改选择此元素的方式:

getprice=Trim(Doc.getElementsByClassName(“Price”)(0.innerText)

您可能会在元素选择的末尾注意到
(0)
。这是为了指示正在从Price ClassName集合中选择哪个元素。getElementsByClassName返回多个元素,第一个元素为0

第二期

工作表(“Sheet1”)。范围(C1)。值=getprice

我没有
C1
引用到任何地方。引用特定单元格的一种方法是使用字符串来表示范围。从您的代码可以看出:


工作表(“Sheet1”).Range(“C1”).Value=getprice

上述代码存在一些问题

第1期

getprice=Trim(Doc.getElementsByTagName(“div class=“Price”itemprop=“Price”).innerText)

这:
div class=“Price”itemprop=“Price”
不是标记名。标记名是输入、IMG、锚等。但是,我们可以看到您感兴趣的price元素的
Class
属性。我们可以通过以下操作更改选择此元素的方式:

getprice=Trim(Doc.getElementsByClassName(“Price”)(0.innerText)

您可能会在元素选择的末尾注意到
(0)
。这是为了指示正在从Price ClassName集合中选择哪个元素。getElementsByClassName返回多个元素,第一个元素为0

第二期

工作表(“Sheet1”)。范围(C1)。值=getprice

我没有
C1
引用到任何地方。引用特定单元格的一种方法是使用字符串来表示范围。从您的代码可以看出:


工作表(“Sheet1”).Range(“C1”).Value=getprice

代码在哪一行失败?代码在哪一行失败?太棒了。非常感谢。谢谢