You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中Selenium WebDriver无法获取全部图片链接的原因与解决办法

问题分析与解决办法

问题根源确实是JavaScript动态渲染——这个网站用了滚动加载,初始页面只渲染可见区域的图片,剩下的得滚动到对应位置才会加载出来,所以你直接爬只能拿到已渲染的160个。

下面是调整后的代码和步骤:

核心修改点

  • 循环滚动页面,触发所有图片的加载
  • 用显式等待确保元素加载完成,避免遗漏

完整代码

from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from webdriver_manager.chrome import ChromeDriverManager

# 初始化浏览器
chrome_options = webdriver.ChromeOptions()
# 按需添加配置,比如无头模式:chrome_options.add_argument("--headless=new")
driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()), options=chrome_options)
driver.get('https://www.politicsanddesign.com/')

# 滚动加载所有内容
last_height = driver.execute_script("return document.body.scrollHeight")
while True:
    # 滚动到页面底部
    driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
    # 等待新内容加载(时间可根据网站速度调整)
    driver.implicitly_wait(3)
    # 获取新的页面高度
    new_height = driver.execute_script("return document.body.scrollHeight")
    # 高度不再变化说明加载完成
    if new_height == last_height:
        break
    last_height = new_height

# 显式等待所有图片元素加载完成
wait = WebDriverWait(driver, 10)
img_elements = wait.until(EC.presence_of_all_elements_located((By.XPATH, "//div[@class='responsive-image-wrapper']/img")))

# 提取图片URL
img_url2 = []
for element in img_elements:
    try:
        srcset = element.get_attribute("srcset")
        if srcset:
            new_srcset = 'https:' + srcset.split(' 400w', 1)[0]
            img_url2.append(new_srcset)
    except Exception as e:
        print(f"处理图片时出错: {e}")
        continue

# 查看结果数量
print(f"共获取到 {len(img_url2)} 个图片URL")

driver.quit()

额外说明

  • 滚动等待时间(implicitly_wait(3))可根据网站加载速度调整,慢的话改成5秒也可以
  • 加try-except是为了避免个别图片的srcset格式异常导致整个循环中断
  • 如果还是有遗漏,可以多滚动几次,或者延长等待时间

内容的提问来源于stack exchange,提问作者Damon C. Roberts

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 11:15:36