我想从 Internet 站点获取数据。
我明白了
run-time error '91'
我修改了之前的代码。
Sub DENEME()
Dim S As String
Dim html As HTMLDocument
Dim hTable As HTMLTable
Dim clipboard As Object
Set html = New HTMLDocument
With New XMLHTTP60
.Open "GET", "https://www.scorespro.com/basketball/results/date/2019-02-15", False
.setRequestHeader "content-type", "application/x-www-form-urlencoded; charset=UTF-8"
.send
S = .responseText
End With
html.body.innerHTML = S
Set hTable = html.querySelector(".matches-data")
Set clipboard = GetObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")
clipboard.SetText hTable.outerHTML
clipboard.PutInClipboard
Range("A1").PasteSpecial
End Sub
最佳答案
有几点需要注意。
VBA:
Option Explicit
Public Sub Deneme()
Dim s As String, ws As Worksheet, tables As Object, i As Long
Dim html As HTMLDocument, clipboard As Object
Set html = New HTMLDocument
Set ws = ThisWorkbook.Worksheets("Sheet1")
Application.ScreenUpdating = False
With New XMLHTTP60
.Open "GET", "https://www.scorespro.com/basketball/results/date/2019-02-15", False
.setRequestHeader "content-type", "application/x-www-form-urlencoded; charset=UTF-8"
.send
s = .responseText
End With
html.body.innerHTML = s
Set tables = html.querySelectorAll("#matches-data table")
Set clipboard = GetObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")
For i = 0 To tables.Length - 1
clipboard.SetText tables.item(i).outerHTML
clipboard.PutInClipboard
ws.Range("A" & GetLastRow(ws) + 1).PasteSpecial
Next
Application.ScreenUpdating = True
End Sub
Public Function GetLastRow(ByVal sh As Worksheet) As Long
On Error Resume Next
GetLastRow = sh.Cells.Find(What:="*", _
After:=sh.Range("A1"), _
Lookat:=xlPart, _
LookIn:=xlFormulas, _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious, _
MatchCase:=False).Row
On Error GoTo 0
End Function
关于html - 从使用 Java 脚本进行查询的站点中提取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56413715/