我正在嘗試通過 Excel VBA 從網站中提取資料。我有一個網頁,該網頁根據按鈕選擇具有不同的資料,但該按鈕位于 ul 串列中。我可以使用以下方法按類查找元素:
.FindElementByClass("shared-filter-button-list_navItem__ZiG2J")
但我似乎可以弄清楚如何在“本季”和“所有時間”之間切換焦點以更改頁面上顯示的資料。任何想法將不勝感激。html是:
<ul class="shared-filter-button-list_navContainer__3hJmS"><li class="shared-filter-button-list_navItem__ZiG2J is-active"><button class="tag-button_btn__1B2dI tag-button__purple__3SyTF shared-filter-button_wrap__3OgbA is-active" value="This season" type="button">This season</button></li><li class="shared-filter-button-list_navItem__ZiG2J"><button class="tag-button_btn__1B2dI tag-button__purple__3SyTF shared-filter-button_wrap__3OgbA " value="All time" type="button">All time</button></li></ul>
uj5u.com熱心網友回復:
查看頁面會有所幫助,但如果您只想單擊“本季”或“所有時間”按鈕,只需在您已有的串列中找到按鈕并單擊一個?
更新
我誤讀了提供的 HTML(全部在一行中),并認為這shared-filter-button-list_navItem__ZiG2J是容器ul而不是串列項,而且 selenium 使用基于 1 的索引而不是基于 0 的索引。
下面的代碼查找與查詢匹配的所有按鈕,并將它們的索引和文本列印到除錯視窗。
Private Driver As Selenium.ChromeDriver
Sub Main()
Set Driver = New Selenium.ChromeDriver
Driver.Get "https://www.euroleaguebasketball.net/eurocup/players/lukas-meisner/011187/"
Dim List As Selenium.WebElements
' get a list of button that are children of li with specified class name
Set List = Driver.FindElementsByXPath("//li[contains(@class, 'shared-filter-button-list_navItem__ZiG2J')]/button", 0, 5000)
If List Is Nothing Then
Debug.Print "failed to get list"
Exit Sub
End If
For Index = 1 To List.Count
Debug.Print Index & " -> " & List(Index).Text
Next Index
End Sub
此代碼的預期結果是:
1 -> This season
2 -> All time
3 -> Regular Season
如果您想單擊本季按鈕
List(1).Click
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/516647.html
標籤:擅长vba硒网页抓取
