VBA, чтобы скопировать значение с сайта Google Analytics [открыто в IE] в Excel - PullRequest
0 голосов
/ 14 сентября 2018

Ранее я выполнял несколько подключений VBA + IE, особенно в отношении выбора различных кнопок и списков [включая автоматический ввод данных, например, для входа в систему, даты и т. Д.].Тем не менее, я не делал копирования конкретных данных из IE, чтобы преуспеть раньше.

Вопрос в том, как извлечь эти данные из IE, чтобы преуспеть.А именно число 257 (которое меняется каждый день).Дополнительным вопросом является структура страницы IE [которая является Google Analytics].Прежде чем вы сообщите мне, что я могу использовать «Экспорт» на странице GA, обратите внимание, что большинство моих параметров заблокировано.Также Google Drive и Google Docs выходят за рамки уравнения.

Часть исходного кода:

<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-макет», который, кажется, уникален для этой конкретной коробки?Тем не менее, это должно было бы спуститься в область, которая в любом случае имеет значение 257.Пожалуйста, порекомендуйте.Спасибо.

Вот что я получаю Q:

enter image description here

Ответы [ 2 ]

0 голосов
/ 14 сентября 2018

Для показанного HTML вы можете попытаться сузить комбинацию селектора родительского идентификатора и атрибута локального класса

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

Не все селекторы отображаются в поле запроса ниже, но это результат:

enter image description here

Селектор идентификатора добавлен, чтобы попытаться локализовать селектор класса, учитывая небольшой пример HTML."#" - это селектор идентификатора 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
0 голосов
/ 14 сентября 2018

Используется ли класс "_GAeS _GAHeb _GAA6" только в этой строке?

Если это так, это должно работать:

IE.document.getElementsByClassName("_GAeS _GAHeb _GAA6")(0).innerText
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...