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

Python中使用Beautiful Soup处理图片多属性名称的优化方案

优化图片链接提取方案

首先修正你获取图片标签的代码,原代码里的冒号应该改成逗号:

imgs = soup.find_all('img', {'class': 'slide-img'})

针对多属性提取的繁琐问题,你可以用属性优先级列表+循环遍历的方式替代重复的try-except,代码更简洁易维护:

优化后的代码示例

def get_img_url(img_tag):
    # 定义属性优先级,按顺序尝试
    src_attrs = ['data-src', 'src', 'lazy-src']
    for attr in src_attrs:
        img_url = img_tag.get(attr)
        if img_url:
            # 去掉?后面的参数部分,用split更安全(兼容没有?的情况)
            return img_url.split('?')[0]
    return ''

# 遍历所有图片标签提取链接
for img in imgs:
    full_img_url = get_img_url(img)
    if full_img_url:
        print(full_img_url)

逻辑说明

  • 把所有可能的图片属性按优先级放进列表,优先取data-src,再是src,最后lazy-src
  • 用img_tag.get(attr)替代直接索引,不存在的属性会返回None,不会抛出异常,省去try-except
  • 用split('?')[0]处理链接,比find更稳妥:如果链接里没有?,split后第一个元素就是完整链接,不会出现切片错误

这样后续要加新的属性(比如data-lazy),只需要在src_attrs列表里加一项就行,不用写新的try块,代码扩展性更好。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 22:35:52