如何从网页上抓取数据

时间:2018-03-04 13:25:36

标签: javascript jquery vba excel-web-query

我试图从网页上抓取赔率数据,到目前为止,我的脚本确实为我提供了我需要的数据,但却非常混乱。

我期待获得3排(博彩公司,玩家1赔率,玩家2赔率)

  • BookMaker / Boylesports Betfair Betvictor William Hill Lads Broker Bet at home Winner Sports Betfred BetWay RedZonesSport ToteSport SportNation Unibet 888 10bet Coral Bet Bright PaddyPower vernons TonyBet NetBet SpreadEx Bet365 Betfair Smarkets BetDaq
  • Jm Del Potro / 1.5 1.5 1.5 1.5 1.44 1.46 1.45 1.5 1.5 1.48 1.5 1.48 1.49 1.49 1.48 1.44 1.44 1.5 1.45 1.48 1.48 1.47 1.5 1.51 1.51 1.5
  • K Anderson / 2.62 2.62 2.75 2.6 2.75 2.53 2.63 2.63 2.6 2.7 2.63 2.7 2.63 2.63 2.7 2.75 2.6 2.62 2.63 2.65 2.7 2.63 2.62 2.88 2.88 2.84

  • 它以垂直的方式获取数据,而在网页中它是水平的,我得到一张额外的工作表,只是空的,所以我试图摆脱它

  • 我获得了分数赔率,最好得到十进制分数

这是我的代码:

Sub GetOddsValues()

Dim XMLPage As New MSXML2.XMLHTTP60
Dim HTMLDoc As New MSHTML.HTMLDocument

XMLPage.Open "GET", "https://easyodds.com/tennis/atp/acapulco-mexico/928015/match-result", False
XMLPage.send

HTMLDoc.body.innerHTML = XMLPage.responseText

Dim HTMLTable As MSHTML.IHTMLElement
Dim HTMLTables As MSHTML.IHTMLElementCollection
Dim HTMLRow As MSHTML.IHTMLElement
Dim HTMLCell As MSHTML.IHTMLElement
Dim RowNum As Long, ColNum As Integer

Set HTMLTables = HTMLPage.getElementsByTagName("table")

For Each HTMLTable In HTMLTables

    Worksheets.Add
    Range("A1").Value = HTMLTable.className
    Range("B1").Value = Now

    RowNum = 2
    For Each HTMLRow In HTMLTable.getElementsByTagName("td")

        ColNum = 1
        For Each HTMLCell In HTMLRow.Children
            Cells(RowNum, ColNum) = HTMLCell.innerText
            ColNum = ColNum + 1
        Next HTMLCell

        RowNum = RowNum + 1

    Next HTMLRow

Next HTMLTable
End Sub

我注意到在页面源代码中的每个单元格中,都有一个小数名称的等级名称" oddsValue"但每当我尝试修改我的代码以选择它时,我得到运行时错误438.我不确定我在那里做错了什么。

有人可以帮忙整理一下,让数据真正可读!

0 个答案:

没有答案
相关问题