Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Html 如何在网页上单击多个按钮_Html_Excel_Vba_Internet Explorer_Web Scraping - Fatal编程技术网

Html 如何在网页上单击多个按钮

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

当前正在从网页中提取数据()

在提取数据之前,我希望数据的格式为十进制,而不是小数。这可以通过单击页面右上角的“控制盘”,然后单击“十进制”来完成

VBA代码中未出现任何错误,但一旦数据传输到excel工作表中,数据仍为分数格式

如果您对此有任何想法,我们将不胜感激

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