【发布时间】:2020-01-21 03:57:56
【问题描述】:
我正在尝试提取此网页中的详细信息,它们似乎位于某些具有“左选择”和“右选择”权利的“div”下。我还没有找到成功拉它的方法。 这是网址 - https://sports.ladbrokes.com/en-af/betting/golf/golf-all-golf/us-masters/2020-us-masters/228648232/
我已尝试在此链接中使用 QHar 的方法 - How to extract values from nested divs using VBA。但是我在这条线上遇到了错误- ReDim 结果(1 To countries.Length / 2, 1 To 4)
这是我一直在尝试的代码
Option Explicit
Public Sub GetData()
Dim html As HTMLDocument, ws As Worksheet, countries As Object, scores As Object, results(), i As
Long, r As Long
Set ws = ThisWorkbook.Worksheets("Sheet1"): Set html = New HTMLDocument: r = 1
With CreateObject("MSXML2.XMLHTTP")
.Open "GET", "https://sports.ladbrokes.com/en-af/betting/golf/golf-all-golf/us-masters/2020-us-masters/228648232/", False
.send
html.body.innerHTML = .responseText
End With
Set participant = html.querySelectorAll(".market-content .selection-left"): Set scores = html.querySelectorAll("..market-content .selection-right")
ReDim results(1 To countries.Length / 2, 1 To 4)
For i = 0 To participant.Length - 1 Step 2
results(r, 1) = participant.item(i).innerText: results(r, 2) = "'" & scores.item(i).innerText
r = r + 1
Next
ws.Cells(1, 1).Resize(1, 4) = Array("Competition", "Participant", "Score")
ws.Cells(2, 1).Resize(UBound(results, 1), UBound(results, 2)) = results
End Sub
我需要帮助才能使这段代码正常工作
【问题讨论】:
-
如果
countries.Length不是偶数怎么办?还是零? “我遇到错误”并不是对您在运行代码时看到的内容的非常有用的描述 - 确切的错误消息是什么? -
您似乎声明了变量“国家”,但您没有设置它的值,所以当您尝试使用它的长度属性时它等于无。
-
您最好的选择是 selenium basic,因为内容是动态呈现的。您可以尝试模仿页面发出的 POST 请求,但这并不简单。
标签: html excel vba internet-explorer web-scraping