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

如何用Selenium Python提取img标签alt属性值?遇动态id难题

解决动态ID下提取图片alt属性的问题

针对动态ID(仅部分数字变动)的场景,无需依赖完整ID定位元素,以下几种实用方法可直接提取图片的alt属性:

方法1:匹配ID的固定片段

观察ID格式可知,大部分字符串固定,仅中间两处数字变动,可通过字符串匹配定位父元素:

  • 兼容多数环境的写法:
//*[starts-with(@id, 'j_id1102997597_32d04ef7:0:j_id1102997597_32d04d36:') 
    and contains(@id, ':j_id1102997597_32d04d7a:') 
    and ends-with(@id, ':j_id1102997597_32d04d8e:j_id415163359_4cfbfc60')]/img/@alt
  • 支持正则的XPath 2.0+环境写法(如Selenium配合现代浏览器):
//*[matches(@id, 'j_id1102997597_32d04ef7:0:j_id1102997597_32d04d36:\d+:j_id1102997597_32d04d7a:\d+:j_id1102997597_32d04d8e:j_id415163359_4cfbfc60')]/img/@alt

方法2:直接定位图片元素

跳过动态ID的父元素,利用图片自身或容器的固定特征定位:

  • 若图片有固定class:
//img[@class='target-image-class']/@alt
  • 若图片在固定ID的容器内:
//div[@id='fixed-container']//img/@alt
  • 提取页面所有图片的alt属性:
//img/@alt

方法3:利用ID的数字关联特征

ID中两处变动的数字完全一致(如都是2、1、0),可通过字符串截取匹配该关联:

//*[substring-before(substring-after(@id, 'j_id1102997597_32d04d36:'), ':') 
    = substring-before(substring-after(@id, 'j_id1102997597_32d04d7a:'), ':')]/img/@alt

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 14:03:13