找不到任何方法点击下拉菜单选择任何更好的项目

SIM*_*SIM 7 excel vba click excel-vba web-scraping

我在vba中编写了一些代码,使用IE England Premier League从下拉列表中进行选择,Next To Play此时此刻可见.我的目标是点击标题为的下拉链接Next To Play,然后选择Australia A-Leaguefrom选项.但是,我找不到任何方法来点击这个链接.如果我按原样运行我的下面的脚本,它既不起作用也不抛出任何错误,最后退出浏览器.

链接到该网页:URL

这是我到目前为止所尝试的:

Sub soccer()
    Dim IE As New InternetExplorer, html As HTMLDocument
    Dim post As Object

    With IE
        .Visible = True
        .navigate "replace_with_above_link"
        Do Until .readyState = READYSTATE_COMPLETE: Loop
        Set html = .document
    End With

    Application.Wait Now + TimeValue("00:00:05")
    For Each post In html.getElementsByTagName("option")
''        If InStr(post.innerText, "Next To Play") > 0 Then MsgBox post.innerText: Exit For  ''checked to see if I'm on the right place
        If InStr(post.innerText, "Next To Play") > 0 Then post.Click: Exit For
    Next post

   IE.Quit
End Sub
Run Code Online (Sandbox Code Playgroud)

这是我要触发点击的网页的部分图片.

在此输入图像描述

我希望能够点击该链接并从那里选择任何选项.

看来我接近解决方案了.我的下面的脚本可以选择我想要点击的部分:

Sub Soccer_Dropdown()

    Dim IE As New InternetExplorer, html As HTMLDocument
    Dim post As Object

    With IE
        .Visible = True
        .navigate "https://ubet.com/sports/soccer/nexttoplay"
        Do Until .readyState = 4: DoEvents: Loop
        Set html = .document
    End With

    Application.Wait Now + TimeValue("00:00:05")
    Set post = html.querySelector(".ubet-fixed-price-navigator-selector-league select")
    post.Focus

'   IE.Quit
End Sub
Run Code Online (Sandbox Code Playgroud)

结果图片:

在此输入图像描述

但是,当涉及到执行点击时,我不能再做了.

A S*_*ANI 1

网页抓取是否绝对需要 GUI 网页浏览器?让我怀疑...

如果您尝试调试目标页面,您将看到您正在查找的数据是 JSON 类型,并且是由 XHR 请求产生的。

因此,假设您获得了向目标网站发送 XHR 请求所需的所有 cookie,您可以直接获取 JSON 数据(来自curl),而不是浏览网站...


显然每个联赛都有一个唯一的 ID(英格兰 50,澳大利亚 76,等等......)

因此,为了访问数据Australia A-League,您必须发送 GET 请求:

https://ubet.com/api/sportsViewData/nexttoplay/false/3/76 Australia A-League


在这个生成的 JSON 文件中,您将获得一个Offers密钥,其中包含一个字典,其中包含所有报价,还包含我希望您要废弃的所有必需数据......

请参阅报价示例:

LongDisplayName "Central Coast Mariners"
DisplayOrder    1
OfferOrder  1
HAD 1
PlaceDeduction  0
ShowOfferBasedDynamicOffer  false
OfferId 308151
OfferName   "Central Coast"
DisplayHAD  1
WinReturn   1.85
PlaceReturn 0
DynamicOffer    null
Status  "o"
Run Code Online (Sandbox Code Playgroud)

问候