从网站获取背景颜色

时间:2018-03-11 13:22:49

标签: excel-vba web-scraping vba excel

您好我试图从网站上获取背景颜色,以便将其与其他操作进行比较。就像网站购买按钮的背景颜色一样。

Sub Colorfinder()
Dim oIE As New InternetExplorer
Dim oHtml As HTMLDocument
Dim tags As Object
Dim HTMLtags As IHTMLElementCollection
Dim HTMLtag As IHTMLElement

With oIE
    .Visible = True
    .navigate "https://www.gdax.com/trade/LTC-EUR"
    Do Until .readyState = READYSTATE_COMPLETE: Loop
    Set oHtml = .document
End With


'this is needed to wait until the page is totally loaded
Do: Set tags = oHtml.getElementsByClassName("OrderBookPanel_text_3fH-g")(0): DoEvents: Loop While tags Is Nothing


'getting the element that it is about
Do: Set HTMLtags = oHtml.getElementsByClassName("OrderForm_toggle_31S34"): DoEvents: Loop While HTMLtags.Length = 0

Set HTMLtag = HTMLtags(0).Children(0)
Debug.Print HTMLtag.innerText

'this is the problem
Debug.Print HTMLtag.Style.backgroundColor

End Sub

我从其他人的溢出用户那里得到了这个想法。但它不起作用。 link stuckoverflow

2 个答案:

答案 0 :(得分:3)

请尝试以下代码:

Sub Colorfinder()

    With CreateObject("InternetExplorer.Application")
        .Visible = True
        .navigate "https://www.gdax.com/trade/LTC-EUR"
        Do While .Busy Or .readyState < 4: DoEvents: Loop
        With .Document
            Do While .getElementsByClassName("OrderBookPanel_text_3fH-g").Length = 0: DoEvents: Loop
            Do While .getElementsByClassName("OrderForm_toggle_31S34").Length = 0: DoEvents: Loop
            With .parentWindow
                .execScript "var e = document.getElementsByClassName('OrderForm_toggle_31S34')[0].children[0];"
                .execScript "e.style.backgroundColor = window.getComputedStyle(e,null).getPropertyValue('background-color');"
            End With
            Debug.Print .getElementsByClassName("OrderForm_toggle_31S34")(0).Children(0).Style.backgroundColor ' rgb(77, 165, 60)
        End With
    End With

End Sub

.execScript在HTML文档中执行JScr​​ipt代码,这就是语法使用var'[];等变量{{}的原因。 1}}是在文档范围中声明的目标节点,它是实际计算的背景值,只是放入e属性。使用.backgroundColor是我找到实际工作的.execScript方法的唯一方法。

答案 1 :(得分:0)

真的是否需要自动化?

“购买”按钮的背景颜色为:

#4da53c
(点击了解有关 #4da53c Strong Sap Green 的更多信息。)

右键单击网页上的任何元素,然后选择Inpsect Element以查找样式属性下的颜色(具体位置取决于您的浏览器)。

或者,使用颜色检测实用程序,例如:

其他浏览器可以使用其他浏览器,还有一些网站可以识别上传图片,网址,整个网站配色方案等的颜色。