这可能属于新手的愚蠢问题。但老实说,我不知道从哪里开始VBA。我在网上尝试了几种不同的方法,试图从我尝试的网站中提取数据,并且所有这些方法都失败了。有人可以帮助我(或多或少地告诉我)如何从这个网站提取数据?
https://rotogrinders.com/projected-stats/nfl?site=fanduel
它甚至不允许我进行数据>导入。这是我到目前为止所拥有的。我一直卡在线上对于t = 0 To(Table.Length - 1)。
Sub test1()
Dim appIE As Object
Set appIE = CreateObject("internetexplorer.application")
Dim Table As Object
Dim t As Integer
Dim r As Integer
Dim c As Integer
With appIE
.Navigate "https://rotogrinders.com/projected-stats/nfl?site=fanduel"
.Visible = True
End With
Do While appIE.Busy
DoEvents
Loop
Set Table = appIE.document.getElementById("proj-stats")
For t = 0 To (Table.Length - 1)
For r = 0 To (Table(t).Rows.Length - 1)
For c = 0 To (Table(t).Rows(r).Cells.Length - 1)
ThisWorkbook.Worksheets(1).Cells(r + 1, c + 1) = Table(t).Rows(r).Cells(c).innerText
Next c
Next r
Next t
appIE.Quit
Set appIE = Nothing
End Sub
答案 0 :(得分:0)
您很接近,有几种方法可以获取数据。我选择提取所有行元素(HTML <TD>
)并逐步完成一个简单的循环。由于有六列我使用两个变量(r
&amp; c
用于行和列)来偏移数据以便正确格式化。
Set Table = appIE.document.getElementsbytagname("td")
r = 0
c = 0
For Each itm In Table
Worksheets(1).Range("A1").Offset(r, c).Value = itm.innertext
c = c + 1
If c Mod 6 = 0 Then
r = r + 1
c = 0
End If
Next itm
示例结果:
最后一点说明,有时浏览器在脚本运行之前没有完成加载...我在循环之前使用断点作弊,等待加载,然后点击F5继续执行代码到确保它一直运行。