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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了VBA将值从Google Analytics [在IE中打开]网站复制到Excel相关的知识,希望对你有一定的参考价值。

我以前做过很少的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

答案

对于显示的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
另一答案

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

如果是,这应该工作:

IE.document.getElementsByClassName("_GAeS _GAHeb _GAA6")(0).innerText

以上是关于VBA将值从Google Analytics [在IE中打开]网站复制到Excel的主要内容,如果未能解决你的问题,请参考以下文章

Excel VBA 将值从一张表移动到另一张表

使用VBA将值从一个表粘贴到另一个表

将 Excel 中的值从字符串更改为数字

javascript 找到所有空字段的简单脚本,将其名称添加到字符串,通过页面休假的自定义事件将值发送到Google Analytics。

将值从代码隐藏传递给 js

将值从ListBox复制到工作表单元格