Javascript 如何使用vba从Datastore.prime中刮取数据

Javascript 如何使用vba从Datastore.prime中刮取数据,javascript,vba,excel,web-scraping,Javascript,Vba,Excel,Web Scraping,我正试图从这个网站上搜集数据 当我使用inspect元素时,我看到数据是表格格式的,如下图所示 源代码中包含此格式的数据 DataStore.prime('stagefixtures',$.extend({stageId:12496,isAggregate:false},calendar.parameter()),[[959688,1,'2015年12月21日星期一','20:00',13,'Arsenal',0167,'Manchester City',0,'2:1',2:0',1,1,'

我正试图从这个网站上搜集数据

当我使用inspect元素时,我看到数据是表格格式的,如下图所示

源代码中包含此格式的数据

DataStore.prime('stagefixtures',$.extend({stageId:12496,isAggregate:false},calendar.parameter()),[[959688,1,'2015年12月21日星期一','20:00',13,'Arsenal',0167,'Manchester City',0,'2:1',2:0',1,1,'FT',1',0,1112,0] [959683,4,'2015年12月26日星期六','12:45',96,'Stoke',0,32,'Manchester United',0,'vs',0,1,,'-1',0,1,13,0] [959615,4,'2015年12月26日星期六','15:00',24,'Aston Villa',0,29,'West Ham',0,'vs',0,1,,'-1',0,1,6,0] [959625,4,'2015年12月26日星期六','15:00',183,'Bournemouth',0162,'Crystal Palace',0,'vs',0,1,,'-1',0,1,10,0] ,[959635,4,'2015年12月26日星期六','15:00',15,'Chelsea',0,27,'Watford',0,'vs',0,1,,'-1',0,1,15,0] [959645,4,'2015年12月26日星期六','15:00',26,'Liverpool',0,14,'Leicester',0,'vs',0,1,,'-1',0,1,15,0] [959655,4,'2015年12月26日星期六','15:00',167,'Manchester City',0,16,'Sunderland',0,'vs',0,1,,'-1',0,1,4,0] ,[959691,4,'2015年12月26日星期六','15:00',259,'Swansea',0175,'West Bromwich Albion',0,'vs',0,1,'-1',0,1,5,0] [959698,4,'2015年12月26日星期六','15:00',30,'Tottenham',0168,'Norwich',0,'vs',0,1,,'-1',0,1,8,0] [959665,4,'2015年12月26日星期六','17:30',23,'纽卡斯尔联队',0,31,'Everton',0,'vs',0,1,,'-1',0,1,7,0] [959674,4,'2015年12月26日星期六','19:45',18,'Southampton',0,13,'Arsenal',0,'vs',0,1,,'-1',0,1,11,0] ]);

这段代码应该从表格式中提取数据,但我不知道在这种情况下如何做

Option Explicit

Sub WeeklyFixtures()


 Dim IE As Object, obj As Object

 Dim r As Integer, c As Integer, t As Integer
 Dim elemCollection As Object

 Set IE = CreateObject("InternetExplorer.Application")

 With IE
 .Visible = True
 .navigate ("http://www.whoscored.com/regions/252/tournaments/2/england-premier-league")
While IE.ReadyState <> 4
DoEvents
Wend

 Do While IE.busy: DoEvents: Loop

ThisWorkbook.Sheet1.Clear

 Set elemCollection = IE.Document.getElementsByTagName("TABLE")

    For t = 0 To (elemCollection.Length - 1)

        For r = 0 To (elemCollection(t).Rows.Length - 1)
            For c = 0 To (elemCollection(t).Rows(r).Cells.Length - 1)
                ThisWorkbook.Worksheets(1).Cells(r + 1, c + 1) = elemCollection(t).Rows(r).Cells(c).innerText
            Next c
        Next r
    Next t

 End With

 Set IE = Nothing

 End Sub
选项显式
亚周刊杂志()
尺寸IE作为对象,obj作为对象
Dim r为整数,c为整数,t为整数
作为对象的暗元素集合
设置IE=CreateObject(“InternetExplorer.Application”)
与IE
.Visible=True
.导航(“http://www.whoscored.com/regions/252/tournaments/2/england-premier-league")
而IE.ReadyState 4
多芬特
温德
在忙的时候做
此工作簿.Sheet1.Clear
Set elemCollection=IE.Document.getElementsByTagName(“表”)
对于t=0到(elemCollection.Length-1)
对于r=0到(elemCollection(t).Rows.Length-1)
对于c=0到(elemCollection(t).Rows(r).Cells.Length-1)
此工作簿.工作表(1).单元格(r+1,c+1)=元素集合(t).行(r).单元格(c).内部文本
下一个c
下一个r
下一个t
以
设置IE=无
端接头

您有Excel 2016吗?在那里,您应该能够通过以下方式获取它:
数据
-->
新查询
-->
来自其他来源
-->
来自Web
。您可以在那里输入您的URL。如果您记录了所有这些,甚至可以得到相应的VBA代码

请尝试以下代码:

Option Explicit

Sub GetWhoscoredData()

    Dim strCont, arrRows, strComma, arrQuots, i, arrCols

    With CreateObject("Microsoft.XMLHTTP")
        .Open "GET", "http://www.whoscored.com/regions/252/tournaments/2/england-premier-league", False
        .Send
        strCont = .ResponseText
    End With

    strCont = Split(strCont, "'stagefixtures'")(1)
    strCont = Split(strCont, "[[")(1)
    strCont = Split(strCont, "]);")(0)
    strCont = Replace(strCont, vbCrLf, "")
    strComma = Mid(CreateObject("Scriptlet.TypeLib").GUID, 2, 36)
    arrQuots = Split(strCont, "'")
    For i = 1 To UBound(arrQuots) Step 2
        arrQuots(i) = Replace(arrQuots(i), ",", strComma)
    Next
    strCont = Join(arrQuots, "")
    arrRows = Split(strCont, "],[")
    For i = 0 To UBound(arrRows)
        arrCols = Split(arrRows(i), ",")
        Cells(i + 1, 1).Value = Replace(arrCols(2), strComma, ",")
        Cells(i + 1, 2).Value = Replace(arrCols(3), strComma, ",")
        Cells(i + 1, 3).Value = Replace(arrCols(14), strComma, ",")
        Cells(i + 1, 4).Value = Replace(arrCols(5), strComma, ",")
        Cells(i + 1, 5).NumberFormat = "@"
        Cells(i + 1, 5).Value = Replace(arrCols(10), strComma, ",")
        Cells(i + 1, 6).Value = Replace(arrCols(8), strComma, ",")
    Next
    Cells.Columns.AutoFit

End Sub
它给我的输出如下:


为什么要使用VBA检索数据?一个简单的
web查询
在我的电脑上运行得很好。只需在
数据
菜单上选择
获取外部数据
,然后从Web上选择
。在那里,您可以输入您提供给我们的URL并选择要检索的表。您甚至可以将查询设置为每隔
xx
秒刷新一次。@Ralph我在表格附近找不到
next->
符号。当我尝试在IE 11中打开站点时,它没有完成加载,表格是空的。在Firefox中,它运行良好。该网站在IE中是否适合您?在您使用Firefox的屏幕截图中,您是否尝试在IE中手动打开页面?@dee在IE中我获得所有表格,但在excel中查询时,我没有在表格中添加下一个符号。正在动态创建表格
id=“锦标赛夹具”
。从服务器下载的网页HTML代码不包含它。请共享您的代码好吗?我在桌子上找不到我需要的下一个黄色标志。您使用的是excel还是access?我使用的是excel 2013