我想用 selenium 从 excel vba 中的 chrome 中抓取表格,但是类中有几个(当前是 2 个)thead 和 tbody 元素。我当前使用的代码仅从第一个 thead 和 tbody 获取数据。我设法用 Internet Explorer 解决了这个问题,但它不适用于 Selenium。不幸的是,ie 有点过时了...... 图片中当前页面的源代码片段[文本]()
Sub test2()
Dim driver As New WebDriver
Dim rowc, cc, columnC As Integer
rowc = 2
driver.Start "chrome"
driver.Get "https://www.betexplorer.com/football/argentina/primera-nacional/"
For Each th In driver.FindElementByClass("stats-table-container").FindElementByTag("thead").FindElementsByTag("tr")
cc = 1
For Each t In th.FindElementsByTag("th")
Munka1.Cells(22, cc).Value = t.Text
cc = cc + 1
Next t
Next th
For Each tr In driver.FindElementsByClass("stats-table-container").FindElementsByTag("tbody").FindElementsByTag("tr")
columnC = 1
For Each td In tr.FindElementsByTag("td")
Munka1.Cells(rowc, columnC).Value = td.Text
columnC = columnC + 1
Next td
rowc = rowc + 1
Next tr
'Application.Wait Now + TimeValue("00:00:20")
End Sub
我也尝试过这个,但总是抛出错误
For Each th In driver.FindElementByClass("stats-table-container").FindElementByTag("thead")(1).FindElementsByTag("tr")
如果有人可以提供帮助,我将不胜感激!
您需要通过首先查找 body 对象,然后检查其内容来分离第二个循环的规范。 替换此语句:
For Each tr In driver.FindElementsByClass("stats-table-container").FindElementsByTag("tbody").FindElementsByTag("tr")
这些陈述:
Set tb = driver.FindElementByClass("stats-table-container").FindElementByTag("tbody")
For Each tr In tb.FindElementsByTag("tr")