我無法理解 Selenium 的 find_elements() 方法的作業原理。幾乎每次我嘗試使用它時,它似乎都回傳一個具有單個值的串列,即只有該元素的第一次出現。現在我正在嘗試將一些博彩網站作為一個小型個人專案進行抓取。最終目標是構建一個程式,將足球隊的名稱作為輸入,并找出哪個博彩公司提供最佳賠率。我的程式成功地到達了列出球隊即將進行的比賽的頁面,但隨后我遇到了問題。這是我的代碼:
假設這是我要抓取的網頁:
鏈接到我要抓取的網站
我注意到所有匹配資訊都在 class = 'event-row-container' 可識別的元素下。網頁上有多個包含此類的元素。然而:
matches = driver.find_elements(By.CLASS_NAME, "event-row-container")
for match in matches:
print(match)
僅列印該元素的一次出現。我究竟做錯了什么?
uj5u.com熱心網友回復:
嘗試這個:
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
#Define web driver as a Chrome driver and navigate
driver = webdriver.Chrome()
driver.maximize_window()
url = 'https://superbet.ro/cautare?query=Steaua'
driver.get(url)
# Click on accept cookies
WebDriverWait(driver, 30).until(EC.presence_of_element_located((By.ID, "onetrust-accept-btn-handler"))).click()
# Save all the events in a list
events = WebDriverWait(driver, 30).until(EC.presence_of_all_elements_located((By.CLASS_NAME, "event-row-container")))
# Then with that list I do whatever I want, in this example only showing the text
for event in events:
print(event.text)
如您所見,我正在使用presence_of_element_located或presence_of_all_elements_located哪個是最好的庫。
我不確定,但我會說find_elements將被棄用
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/535860.html
標籤:硒网页抓取
上一篇:如何將總統的講話抓取到資料框?
下一篇:使用grep從API中提取資料
