[英]How to pull data from a website with Excel VBA
我正在嘗試編寫VBA代碼以從網站上提取產品的價格。 為此,我在VBA參考中打開了“Microsoft HTML對象庫”和“Microsoft Internet Controls”。 但是,當我開始搜索附加價格的項目時,代碼失敗了。 感謝是否有人可以為它提供解決方案。
以下是我想要復制價格的示例網頁的鏈接。 鏈接
以下是我的初始代碼:
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等等。但是,我們可以看到您感興趣的price元素的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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.