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)
结果图片:
但是,当涉及到执行点击时,我不能再做了.
网页抓取是否绝对需要 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)
问候