Html 如何在网页上单击多个按钮
当前正在从网页中提取数据() 在提取数据之前,我希望数据的格式为十进制,而不是小数。这可以通过单击页面右上角的“控制盘”,然后单击“十进制”来完成 VBA代码中未出现任何错误,但一旦数据传输到excel工作表中,数据仍为分数格式 如果您对此有任何想法,我们将不胜感激Html 如何在网页上单击多个按钮,html,excel,vba,internet-explorer,web-scraping,Html,Excel,Vba,Internet Explorer,Web Scraping,当前正在从网页中提取数据() 在提取数据之前,我希望数据的格式为十进制,而不是小数。这可以通过单击页面右上角的“控制盘”,然后单击“十进制”来完成 VBA代码中未出现任何错误,但一旦数据传输到excel工作表中,数据仍为分数格式 如果您对此有任何想法,我们将不胜感激 Sub-scraper() Dim IE作为新的SHDocVw.InternetExplorer 将HTMLDoc设置为MSHTML.HTMLDocument 将HTMLTable设置为MSHTML.IHTMLElement 将HT
Sub-scraper()
Dim IE作为新的SHDocVw.InternetExplorer
将HTMLDoc设置为MSHTML.HTMLDocument
将HTMLTable设置为MSHTML.IHTMLElement
将HTMLDiv设置为MSHTML.IHTMLElement
作为对象单击
将最终单击变暗为对象
可见=真实
即“导航”https://www.oddschecker.com/golf/memorial-tournament/winner"
在IE.readyState readyState_完成或IE忙时执行此操作
环
设置HTMLDoc=IE.document
设置HTMLDiv=HTMLDoc.getElementById(“oddsTableContainer”)
设置HTMLTable=HTMLDiv.getElementsByTagName(“表”)(0)
设置InitialClick=IE.document.getElementsByClassName(“图标项所有工具标题按钮”)(0)。单击
设置FinalClick=IE.document.getElementsByClassName(“ODDSettingsController作为ODDSettingsController”)
对于FinalClick中的每个Obj
如果FinalClick.getAttribute(“ng click”)=(“oddsettingsController.setOddsType('decimal')),则
最后单击。单击
退出
如果结束
下一个
WriteTableToSheet HTMLTable
即退出
端接头
您可以按如下所示单击。您的兴趣线如下:
With .document
If .querySelectorAll(".offer-close").Length > 0 Then .querySelector(".offer-close").Click
.querySelector(".tools-icon").Click
If .querySelectorAll("[title='Change to decimal odds']").Length > 0 Then .querySelector("[title='Change to decimal odds']").Click
End With
这将检查是否存在优惠弹出广告并关闭:
If .querySelectorAll(".offer-close").Length > 0 Then .querySelector(".offer-close").Click
这将打开控制盘:
.querySelector(".tools-icon").Click
这将检查当前是否选择了decimal,如果没有,则选择decimal
If .querySelectorAll("[title='Change to decimal odds']").Length > 0 Then .querySelector("[title='Change to decimal odds']").Click
下面的代码删除了开始时表中的一些垃圾
VBA
选项显式
'VBE>工具>参考:Microsoft Internet控件;HTML对象库
公共子GetData()
Dim ie作为对象,hTable作为HTMLTable,剪贴板作为对象,ws作为工作表
设置ws=ThisWorkbook.Worksheets(“Sheet1”)
设置ie=CreateObject(“InternetExplorer.Application”)
设置剪贴板=GetObject(“新建:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}”)
与ie
.Visible=True
.导航2“https://www.oddschecker.com/golf/memorial-tournament/winner"
当.Busy或.readyState<4:DoEvents:Wend时
随附.文件
如果.queryselectoral(“.offer close”).Length>0,则.querySelector(“.offer close”)。单击
.querySelector(“.tools图标”)。单击
如果.querySelectorAll(“[title='Change to decimal Lobbits']”)。长度>0,则.querySelector(“[title='Change to decimal Lobbits']”)。单击
以
当.Busy或.readyState<4:DoEvents:Wend时
Set hTable=.document.querySelector(“.eventTable”)
剪贴板.SetText hTable.outerHTML
剪贴板.PutInClipboard
ws.Range(“A1”).PasteSpecial
暗截止范围
设置截断=ws.Columns(1.Find)(“快速下注”)
如果Not cutOff为Nothing,则ws.rows(“1:&cutOff.Row”).EntireRow.Delete
退出
以
端接头
嵌套在菜单中,至少对我在手机上是这样。在excel中进行简单的除法不是更容易吗,就像转换成分数值一样?非常感谢您提供的上述内容-清楚简洁地回答了所有问题。非常感谢这件漂亮的QHarr!!
Option Explicit
'VBE > Tools > References: Microsoft Internet Controls; HTML Object Library
Public Sub GetData()
Dim ie As Object, hTable As HTMLTable, clipboard As Object, ws As Worksheet
Set ws = ThisWorkbook.Worksheets("Sheet1")
Set ie = CreateObject("InternetExplorer.Application")
Set clipboard = GetObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")
With ie
.Visible = True
.Navigate2 "https://www.oddschecker.com/golf/memorial-tournament/winner"
While .Busy Or .readyState < 4: DoEvents: Wend
With .document
If .querySelectorAll(".offer-close").Length > 0 Then .querySelector(".offer-close").Click
.querySelector(".tools-icon").Click
If .querySelectorAll("[title='Change to decimal odds']").Length > 0 Then .querySelector("[title='Change to decimal odds']").Click
End With
While .Busy Or .readyState < 4: DoEvents: Wend
Set hTable = .document.querySelector(".eventTable")
clipboard.SetText hTable.outerHTML
clipboard.PutInClipboard
ws.Range("A1").PasteSpecial
Dim cutOff As Range
Set cutOff = ws.Columns(1).Find("QuickBet")
If Not cutOff Is Nothing Then ws.rows("1:" & cutOff.Row).EntireRow.Delete
.Quit
End With
End Sub