簡體   English   中英

如何使用Excel VBA從網站中提取數據

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM