【发布时间】:2019-04-27 13:35:49
【问题描述】:
我想从 betexplorer.com 提取数据。我想从以下 URL 中提取两个不同的数据:
https://www.betexplorer.com/soccer/s...eague-1/stats/
我想提取已播放的比赛和剩余的比赛 我想提取主队进球和客队进球(每场比赛)
我有执行此操作的代码,如下所示:
Option Explicit
Sub GetSoccerStats()
'Set a reference (VBE > Tools > References) to the following libraries:
' 1) Microsoft XML, v6.0
' 2) Microsoft HTML Object Library
Dim xmlReq As New MSXML2.XMLHTTP60
Dim objDoc As New MSHTML.HTMLDocument
Dim objTable As MSHTML.htmlTable
Dim objTableRow As MSHTML.htmlTableRow
Dim strURL As String
Dim strResp As String
Dim strText As String
Dim rw As Long
strURL = "https://www.betexplorer.com/soccer/south-korea/k-league-1/stats/"
With xmlReq
.Open "GET", strURL, False
.send
If .Status <> 200 Then
MsgBox "Error " & .Status & ": " & .statusText
Exit Sub
End If
strResp = .responseText
End With
Worksheets.Add
objDoc.body.innerHTML = strResp
Set objTable = objDoc.getElementsByClassName("table-main leaguestats")(0)
If Not objTable Is Nothing Then
rw = 1
For Each objTableRow In objTable.Rows
strText = objTableRow.Cells(0).innerText
Select Case strText
Case "Matches played", "Matches remaining", "Home goals", "Away goals"
Cells(rw, "a").Value = objTableRow.Cells(0).innerText
Cells(rw, "b").Value = objTableRow.Cells(1).innerText
Cells(rw, "c").Value = objTableRow.Cells(2).innerText
rw = rw + 1
End Select
Next objTableRow
Columns("a").AutoFit
End If
Set xmlReq = Nothing
Set objDoc = Nothing
Set objTable = Nothing
Set objTableRow = Nothing
End Sub
此代码有效,但我想更进一步。
我实际上想为同一站点上的许多不同 URL 运行此宏。我已经创建了一个工作表,其中包含足球联赛列表(在行中),列包含数据。
您可以在此处找到该文件: https://www.dropbox.com/s/77sol24sty75w5z/Avg%20Goals.xlsm?dl=0
这是一个文件,我将在其中将联赛添加到行中。是否可以调整提取数据的代码,以便它可以填充工作表中的列?我不需要像这段代码那样提取数据的名称(剩余比赛、主场进球、客场进球等),我只需要数字。提取的数字必须根据工作表填充列(因此每一行都包含每个联赛的数据。如您所见,有几个联赛,因此需要遍历每一行,然后使用相应的 URL行。
您会注意到有一列包含单词 CURRENT。这是为了表明它应该使用当前 URL 列中的 URL。如果我将值更改为 LAST,我希望它使用 Last URL 列中的 URL。
对于每个联赛,如果我使用 CURRENT 或 LAST,它会有所不同。
这是预期输出的图片:
非常感谢任何帮助。
【问题讨论】:
-
对预期输出(包括问题)的小模拟可能有助于显示前几行输出。这可以作为图像插入。
-
当前和最后一个网址有什么区别?你有每个例子吗?
-
我们应该能够在不参考外部文件的情况下回答这个问题。也就是说:您的保管箱文件是公开的吗?我看到 404 未找到
-
我已经更新了链接并添加了一张照片
标签: excel vba web-scraping data-extraction