VBA将值从Google Analytics [在IE中打开]网站复制到Excel

问题描述 投票:0回答:2

我以前做过很少的VBA + IE连接,特别是关于选择不同的按钮和列表[包括自动数据输入,例如登录,日期等]。但是,我还没有将IE中的特定数据复制到excel之前。

问题是如何从IE中提取这些数据到excel。即数字257(每天都在变化)。另外一个问题是IE页面的结构[这是Google Analytics]。在你告诉我我可以在GA页面上使用“导出”之前,请注意我的大多数选项都被阻止了。此外,谷歌驱动器和谷歌文档是不合适的。

源代码的一部分是:

<div class="_GAlF _GALn">P R R</div>
<div class="_GAef" id="ID-layout-1536671725872"><div class="_GANY"><div class="_GAxN"><img width="75" height="18" class="_GANU" alt="" src="s/cleardot.gif"></div><div><div class="_GAeS _GAHeb _GAA6">257</div></div><div><span class="_GAkhb">% of Total:</span> <span class="_GAvQb">0.04%</span> <span class="_GAqs">(601,038)</span></div></div></div>
<div class="_GANY"><div class="_GAxN"><img width="75" height="18" class="_GANU" alt="" src="s/cleardot.gif"></div><div><div class="_GAeS _GAHeb _GAA6">257</div></div><div><span class="_GAkhb">% of Total:</span> <span class="_GAvQb">0.04%</span> <span class="_GAqs">(601,038)</span></div></div>
<div class="_GAxN"><img width="75" height="18" class="_GANU" alt="" src="s/cleardot.gif"></div>
<div><div class="_GAeS _GAHeb _GAA6">257</div></div>
<div class="_GAeS _GAHeb _GAA6">257</div>

清洁截图:

enter image description here

是否可以通过“ID-layout”识别该值,这似乎是这个特定盒子的独特之处?然而,无论如何,这将不得不下降到257的价值区域。请指教。谢谢。

这就是我得到的问题:

enter image description here

excel vba internet-explorer
2个回答
1
投票

对于显示的HTML,您可以尝试使用父ID和本地类属性选择器组合缩小范围

ThisWorkbook.Worksheets("Sheet1").Cells(1,1) =  ie.document.querySelector("#ID-layout-1536671725872 [class='_GAeS _GAHeb _GAA6']").innerText

并非所有选择器都显示在下面的查询框中,但这是结果:

enter image description here

在给定小HTML样本的情况下,添加id选择器以尝试和本地化类选择器。 "#"是id CSS选择器,"[]"是属性选择器。

选择器组合通过.querySelector文档方法应用。如果您使用IE8以上,这应该工作正常。


如果页面不是JS重/慢加载你可能会放弃IE开放发出XMLHTTP请求:

Dim html As New HTMLDocument  '<==Tools > references > add reference to microsoft html object library
With CreateObject("MSXML2.XMLHTTP")
    .Open "GET", URL, False
    .send
    sResponse = StrConv(.responseBody, vbUnicode)
    sResponse = Mid$(sResponse, InStr(1, sResponse, "<!DOCTYPE "))

    With html
        .body.innerHTML = sResponse
        ThisWorkbook.Worksheets("Sheet1").Cells(1,1) = .querySelector("#ID-layout-1536671725872 [class='_GAeS _GAHeb _GAA6']").innerText
    End With
End With

1
投票

类“_GAeS _GAHeb _GAA6”仅用于此行吗?

如果是,这应该工作:

IE.document.getElementsByClassName("_GAeS _GAHeb _GAA6")(0).innerText
© www.soinside.com 2019 - 2024. All rights reserved.