2015-01-15 33 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 

但我担心有嵌套集合里面,所以你的元素可能不会对直接的指标,但你可能需要在元素内一次又一次地循环,这既不合适也不安全。 如果您需要一些额外的帮助,请不要犹豫留下评论,这是我自己从未测试过的一种方法,让我们说这是一个关于如何解决问题的想法。

相关问题