如何使用 Selenium 提取指定 div 中所有图片链接

1次阅读

如何使用 Selenium 提取指定 div 中所有图片链接

本文详解如何通过 python + selenium 定位包含图片链接的 `

` 元素,并准确提取其内部 `` 标签的 `href` 属性值,生成图片 url 列表。适用于电商商品页、图集页等常见场景。

在网页自动化采集中,常需从特定容器(如 class=”goods_descr_images” 的

)中批量获取图片资源链接。这些链接通常隐藏在 标签的 href 属性中(而非 如何使用 Selenium 提取指定 div 中所有图片链接 标签),直接调用 .text 或 .get_attribute(‘src’) 会返回空值或报错——因为目标元素本身不含文本内容,也无 src 属性。

正确做法是:先定位父级

,再查找其内部所有 子元素,最后统一读取 href 属性。以下是完整、健壮的实现代码:

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  # 假设 driver 已初始化(例如:driver = webdriver.Chrome()) # 确保页面已加载完成,推荐显式等待目标 div 出现 wait = WebDriverWait(driver, 10) goods_div = wait.until(     EC.presence_of_element_located((By.CLASS_NAME, "goods_descr_images")) )  # 查找该 div 下所有  标签 a_elements = goods_div.find_elements(By.TAG_NAME, "a")  # 提取每个  的 href 属性(即图片链接) image_links = [a.get_attribute("href") for a in a_elements if a.get_attribute("href")]  # 去重(可选,因示例 html 中存在重复链接) unique_links = list(dict.fromkeys(image_links))  print("共提取到", len(unique_links), "个唯一图片链接:") for idx, link in enumerate(unique_links, 1):     print(f"{idx}. {link}")

⚠️ 关键注意事项:

  • ❌ 不要使用 find_element(By.CLASS_NAME, “https://www.php.cn/link/263b1243ca2dbeb358777ceabc4a2e4c”).text —— 标签无可见文本,.text 返回空字符串;
  • ❌ 不要尝试 get_attribute(‘src’) —— 没有 src 属性,将返回 None;
  • ✅ 必须使用 get_attribute(‘href’),这是 标签的标准属性;
  • ✅ 强烈建议配合 WebDriverWait 显式等待,避免因页面异步加载导致 NoSuchElementException;
  • ✅ 添加 if a.get_attribute(“href”) 过滤,排除 href 为空或 None 的异常 标签;
  • ✅ 若需去重,推荐 list(dict.fromkeys(https://www.php.cn/link/263b1243ca2dbeb358777ceabc4a2e4c))(保持插入顺序),而非 set()(无序且不保证稳定性)。

该方法稳定兼容 Selenium 4.x,适用于各类基于 承载图片预览链接的 DOM 结构,是图像资源批量采集的基础实践方案。

text=ZqhQzanResources