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

如何使用Beautiful Soup遍历列表提取img标签的src属性数据

问题原因

  1. find_all('img')返回的是静态结果集,你执行getimages[0].decompose()仅会将第一个元素从原HTML文档树中删除,不会将它从getimages列表里移除,所以列表中仍然保留已失效的<None>元素。
  2. 你的异常捕获逻辑包裹了整个for循环,遍历到第一个无效元素时触发异常,会直接终止整个循环,走到全局异常分支输出Image not found,后续的有效img元素根本没有机会被处理。

修复方案

方案1:直接跳过首元素遍历

如果你只是不需要处理第一个img元素,不需要从文档树删除它,直接从第二个元素开始遍历即可,同时将异常捕获放到循环内部,避免单个元素失效影响整体遍历:

getimages = getDetails.find_all('img')
for x in getimages[1:]:
    try:
        print(x['src'])
    except (KeyError, TypeError):
        print("当前元素无有效src属性")

方案2:过滤所有无效元素后提取

如果需要兼容列表中任意位置的无效元素,可先做有效性校验再提取属性:

getimages = getDetails.find_all('img')
# 若确实需要从原文档树删除第一个img元素,可保留这行,否则可以删除
getimages[0].decompose()

for x in getimages:
    # 先校验元素是有效img标签且存在src属性
    if x and x.name == 'img' and 'src' in x.attrs:
        print(x['src'])
    else:
        print("当前元素无有效src属性")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 22:36:04