2015-01-15 57 views
0

我寫了這個代碼在VBA webscraping:通過類名稱組合兩個元素具有相同的子字符串?

Sub Scrape() 
    Dim Document As HTMLDocument 
    Dim Browser As InternetExplorer 

    Set Browser = New InternetExplorer 

    Do While Browser.Busy And Not Browser.readyState = READYSTATE_COMPLETE 
     DoEvents 
    Loop 

    Set Document = Browser.Document 

    Set Elements1 = Document.getElementsByClassName("Prices-red") 
    Set Elements2 = Document.getElementsByClassName("Prices-white") 
End Sub 

我想在一個元素命名的元素這兩個元素只搜索「價格」相結合。
這可能嗎?就像我們在Access Prices *中進行查詢一樣。

+0

向我們展示它在網絡中的一些數據以及您打算如何獲取數據。由於getElementByClassName只會獲取每個特定類的信息。 – PaulFrancis

回答

0

這可能是一個部分解決方案,但它可能是值得你看看。如果你知道你所尋找的所有元素總是具有相同的標籤(例如在你的情況下,我猜你會尋找股票價格,這意味着它們通常都是同一類型的標籤,比如說td):

1)創建自定義集合

Dim allPrices As New Collection 

2)得到的所有td元素

Set allElements = Browser.Document.getElementsByTagNam("td") 

3)循環遍歷元素和僅獲得其中的「價格」有一類首發的那些:

For Each element In allElements 
    If (element.hasAttribute("class")) And (element.getAttribute("class") Like "Price*") Then 
     allPrices.Add element 
    End If 
Next element 

在這個循環結束時,其都具有class = "Price"東西會進入所謂的allPrices一個獨特的收藏,元素,從而讓你使用它,而在HTML元素的幾個類似收藏運行相同的代碼。

你可能想進入這個方向找東西更靈活:我曾想過

Set allElements = Browser.Document.All 

但我擔心有嵌套集合裏面,所以你的元素可能不會對直接的指標,但你可能需要在元素內一次又一次地循環,這既不合適也不安全。 如果您需要一些額外的幫助,請不要猶豫留下評論,這是我自己從未測試過的一種方法,讓我們說這是一個關於如何解決問題的想法。

相關問題