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

使用Selenium提取指定div内img标签data-attachment-id属性的方法咨询

核心定位逻辑

使用//div[contains(@class,"entry-content clearfix")]//img作为Xpath定位表达式即可满足需求:

  • 不需要绑定固定post编号,直接通过目标div的class属性定位父容器
  • 表达式中//img的双斜杠会匹配div下所有层级的img元素,无需写明中间节点结构

修正后完整代码

from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC

driver = webdriver.Chrome('my_path')            
driver.get('https://website')
wait = WebDriverWait(driver, 20)

# 等待目标父容器加载完成
wait.until(EC.presence_of_element_located((By.XPATH, '//div[contains(@class,"entry-content clearfix")]')))
# 匹配父容器内所有img元素
img_elements = driver.find_elements(By.XPATH, '//div[contains(@class,"entry-content clearfix")]//img')

# 提取所有data-attachment-id属性值
attachment_id_list = []
for img in img_elements:
    current_id = img.get_attribute("data-attachment-id")
    if current_id:
        attachment_id_list.append(current_id)

# 输出/返回结果
print(attachment_id_list)
# return attachment_id_list

关键注意点

  • 原有代码使用.text提取img属性是错误的,img为单标签无内部文本,自定义属性需要通过get_attribute()方法获取
  • 使用contains(@class, "类名")匹配class属性,可以避免属性前后存在多余空格、后续追加其他类名导致的匹配失败问题
  • 提取多个元素时需要使用复数形式的find_elements方法,find_element仅返回第一个匹配到的元素
  • 显式等待需要先判定父容器加载完成,再查找内部元素,避免页面未渲染完成导致的查找超时问题

内容的提问来源于stack exchange,提问作者Math

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 15:24:03