我想从网页获取一些数据。我需要来自两个表的数据,但两个表具有相同的类名。
我无法让项目(2)工作。
我对 VBA 并不陌生,但对 Selenium 却很陌生。
我能够从第一个表中获取数据,而不是从第二个表中获取数据。我搜索了几个网站,但还没有有效的解决方案。
Sub GetData()
Dim DRow As Byte
Dim DCol As Byte
Dim WebDrv As New WebDriver
Dim tr As Object
Dim td As Object
WebDrv.Start "Chrome"
WebDrv.Get "https://stripinfo.be/reeks/strip/11316_Jeremiah_5_Het_eindeloos_experiment"
Application.Wait Now + TimeValue("00:00:1")
[D7] = WebDrv.FindElementByClass("title").Text
DRow = 8
DCol = 4
For Each tr In WebDrv.FindElementByClass("innerDividers").FindElementByTag("tbody").FindElementsByTag("tr")
For Each td In tr.FindElementsByTag("td")
Cells(DRow, DCol).Value = td.Text
DCol = DCol + 1
Next td
DRow = DRow + 1
DCol = 4
Next tr
DRow = 15
For Each tr In WebDrv.FindElementByClass("innerDividers").FindElementByTag("tbody").FindElementsByTag("tr")
For Each td In tr.FindElementsByTag("td")
Cells(DRow, DCol).Value = td.Text
DCol = DCol + 1
Next td
DRow = DRow + 1
DCol = 4
Next tr
Application.Wait Now + TimeValue("00:00:1")
End Sub
一些选项:
For Each
枚举器Dim tables As Selenium.WebElements, table As Selenium.Table, t As Long
Set tables = WebDrv.FindElementsByClass("innerDividers")
For Each table in tables
'do something with table here
If t = 1 Then Exit For
t = t + 1
Next
您还可以使用 CSS 选择器列表来仅获取这 2 个表
Set tables = WebDrv.FindElementsByCss("section:nth-child(2) div:nth-child(3) div:nth-child(-n+3) table")
随着时间的推移,后者可能不太稳健,但对于短期项目来说效率更高。
选择你的毒药。