VBA网站抓取:点击可点击的下拉菜单(不悬停)

时间:2019-03-18 15:25:05

标签: html excel vba web-scraping

我正在尝试进行一些Web抓取以获得数据表。

数据存储在Google Play控制台中,因此您需要一个帐户才能登录网站。

我设法导航到所需的页面,但是表格结果存储在每日指标中,据我所知,这是无法更改的。

默认情况下,此表如下所示:

enter image description here

我用红色突出显示了问题所在。我需要单击该下拉列表,然后将值更改为* Todo”(表示 All )。激活此选项将使我以后可以导入所需的结果表。

重要提示:由于我不知道的任何原因(我不是开发人员),如果您使用Google Chrome或Internet Explorer访问网站,则元素的类名会不同。我使用的是Internet Explorer 11,所以我发布的所有HTML代码都是因为这个原因。

返回到下拉菜单,并使用开发工具,我设法获得了有关该下拉菜单的信息:

<div tabindex="0" class="OT1ABTB-Q-a OT1ABTB-P-h OT1ABTB-Yg-a" role="button" aria-expanded="false" aria-haspopup="true"><div class="OT1ABTB-Q-a OT1ABTB-P-i">6</div><div class="OT1ABTB-Q-a OT1ABTB-P-a"></div></div>

此外,使用开发工具发布这部分代码的图像: enter image description here

现在,我的VBA代码的相关部分:

Set objDivs = IEDoc.getElementsByClassName("OT1ABTB-N-d OT1ABTB-N-f OT1ABTB-N-a OT1ABTB-N-b")

For Each MiEle In objDivs(0).getElementsByTagName("div")

    If MiEle.className = "OT1ABTB-Q-a OT1ABTB-P-a" Then
        'code goes inside here, so I know I've grabbed the right DIV element. Just don't know what to do now
        Stop

        MiEle.Click 'this does not work

    End If
Next MiEle


Stop

我知道我可以抓住正确的DIV元素,但是不知道如何显示下拉菜单,然后选择1个选项。

如果您手动进行操作,则下拉菜单如下所示: enter image description here

我需要选择显示 Todo 的选项。

我注意到,当我手动单击它时,HTML代码会更改,因为属性 aria-expanded 更改为True,然后HTML代码如下:

<div tabindex="0" class="OT1ABTB-Q-a OT1ABTB-P-h OT1ABTB-Yg-a" role="button" aria-expanded="true" aria-haspopup="true" aria-activedescendant="gwt-uid-520"><div class="OT1ABTB-Q-a OT1ABTB-P-i">6</div><div class="OT1ABTB-Q-a OT1ABTB-P-a"></div></div>

请注意,甚至还有一个名为aria-activedescendant="gwt-uid-520"

的新属性。

所以我只需要更改,结果表就可以显示所有内容。

请,如果您需要更多HTML代码或我的VBA代码更多,请提出要求。我还没有发布所有信息,只是我认为很重要的信息,但是如果您需要更多信息,请提出要求,我很乐意将其发布。

关于网站的链接,正如我所说的,是Google Play控制台,因此恐怕您需要一个帐户,但以防万一,它是这样的:

https://play.google.com/apps/publish/?&account=YOURACCOUNTNUMBERr#StatisticsPlace:p=YOURAPPNAME&statms=DAILY_USER_UNINSTALLS&statgs=DAILY&statd=OS_VERSION&statc=false&dvals=@OVERALL@&statdr=20181011-20190318&statcdr=20181011-20190318

谢谢。

0 个答案:

没有答案