【问题标题】:Why is selenium webdriver in python not returning all image links?为什么 python 中的 selenium webdriver 不返回所有图像链接?
【发布时间】:2022-11-03 23:57:51
【问题描述】:

我正在使用 selenium WebDriver 从加载了 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)

【问题讨论】:

    标签: python selenium selenium-webdriver selenium-chromedriver webdriverwait


    【解决方案1】:

    您需要等待所有这些元素被加载。
    推荐的方法是使用 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:webdriverschromedriver.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 之间的延迟。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-03-11
      • 1970-01-01
      • 1970-01-01
      • 2018-07-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多