excel vba 网页抓取与硒多元素问题

问题描述 投票:0回答:1

我想用 selenium 从 excel vba 中的 chrome 中抓取表格,但是类中有几个(当前是 2 个)thead 和 tbody 元素。我当前使用的代码仅从第一个 thead 和 tbody 获取数据。我设法用 Internet Explorer 解决了这个问题,但它不适用于 Selenium。不幸的是,ie 有点过时了...... 图片中当前页面的源代码片段[文本](enter image description here)

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")

如果有人可以提供帮助,我将不胜感激!

vba web-scraping selenium-chromedriver
1个回答
0
投票

您需要通过首先查找 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")
© www.soinside.com 2019 - 2024. All rights reserved.