我正在使用 seleniumWebDriver從加載了 JavaScript 的網站收集影像的 URL。似乎我的以下代碼僅回傳大約 240 個鏈接中的 160 個。為什么會這樣 - 因為 JavaScript 渲染?
有沒有辦法調整我的代碼來解決這個問題?
driver = webdriver.Chrome(ChromeDriverManager().install(), options = chrome_options)
driver.get('https://www.politicsanddesign.com/')
img_url = driver.find_elements_by_xpath("//div[@class='responsive-image-wrapper']/img")
img_url2 = []
for element in img_url:
new_srcset = 'https:' element.get_attribute("srcset").split(' 400w', 1)[0]
img_url2.append(new_srcset)
uj5u.com熱心網友回復:
您需要等待所有這些元素被加載。
推薦的方法是使用WebDriverWait expected_conditions顯式等待。
這段代碼給了我img_url2串列中的 760-880 個元素:
import time
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
options = Options()
options.add_argument("start-maximized")
webdriver_service = Service('C:\webdrivers\chromedriver.exe')
driver = webdriver.Chrome(options=options, service=webdriver_service)
wait = WebDriverWait(driver, 10)
url = "https://www.politicsanddesign.com/"
driver.get(url)
wait.until(EC.presence_of_all_elements_located((By.XPATH, "//div[@class='responsive-image-wrapper']/img")))
# time.sleep(2)
img_url = driver.find_elements(By.XPATH, "//div[@class='responsive-image-wrapper']/img")
img_url2 = []
for element in img_url:
new_srcset = 'https:' element.get_attribute("srcset").split(' 400w', 1)[0]
img_url2.append(new_srcset)
我不確定這段代碼是否足夠穩定,所以如果需要,您可以激活該wait行和下一行之間的延遲,以獲取所有這些img_url.
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/527465.html
標籤:Python硒硒网络驱动程序硒铬驱动程序网络驱动程序等待
上一篇:如何在Selenium、python中單擊此按鈕。每次我點擊它,它的鏈接都會改變,所以我不能輸入一個特定的鏈接來點擊
