代码之家  ›  专栏  ›  技术社区  ›  ByHala

selenium python只获得第一个图像链接

  •  0
  • ByHala  · 技术社区  · 5 年前

    product 一共有五张图片。我试图获得这五个图像链接,但只获得第一个图像链接。这是我的代码:

    images = driver.find_elements_by_css_selector('#shopify-section-product-template .Image--lazyLoaded')
    
    for image in images:
        image = image.get_attribute('data-original-src') 
    

    #原始数据src包含每个图像的链接

    0 回复  |  直到 5 年前
        1
  •  1
  •   Prophet    5 年前

    该页面最初仅加载1个图像。
    要获得更多图像,必须滚动页面。
    因此,无需滚动页面,即可使用

    images = driver.find_elements_by_css_selector('#shopify-section-product-template .Image--lazyLoaded')
    

    中只有一个元素 images 列表
    UPD
    您可以单击左侧的dot导航,然后获得图像:

    from selenium.webdriver.common.by import By
    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.support import expected_conditions as EC
    
    wait = WebDriverWait(driver, 20)
    
    wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR, ".Product__SlideshowNavScroller")))
    time.sleep(0.2)
    dots = driver.find_elements_by_css_selector('.Product__SlideshowNavScroller a')
    image_src = set()
    for dot in dots:
        dot.click()
        time.sleep(1)
        images = driver.find_elements_by_css_selector('#shopify-section-product-template .Image--lazyLoaded')
        for image in images:
            image_src.add(image.get_attribute('data-original-src'))
    

    image_src 最终将包含所有图片src链接

        2
  •  0
  •   user15558540    5 年前

    这里最可能发生的情况是,图像没有被渲染。要解决这个问题,只需添加一个代码片段,在调用“find_element”函数之前滚动到页面底部。

    driver.execute_script("window.scrollTo(0, 990000)") 
    
        3
  •  0
  •   Barno Chakraborty    5 年前

    因为他们的课程不同,所以你们的学生都能拿到。 您将获得第一张图片:

    images = driver.find_elements_by_css_selector('#shopify-section-product-template .Image--lazyLoaded')
    

    但要获得其他四个用途:。图像——法登类