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

如何使用Beautiful Soup获取第二个srcset属性值

问题

我正尝试使用Beautiful Soup获取第二个srcset属性值,对应的原始HTML代码如下:

<picture class="card-picture ratio ratio-4x3">
<source srcset="/shop/media/L004D000_picture.PNG?context=bWFzdGVyfGltYWdlc3wzMDE3NTN8aW1hZ2UvcG5nfGgwMS9oMjcvODg0ODIyMDYxODc4Mi9MMDA0RDAwMF9waWN0dXJlLlBOR3wyZjRiZWE1NDU2MWU1MjUzMzU5MjAwNGVlYmIzY2MwNGQzODExMDI3NjNkMDE3YjQ4NGMwNjFlMGVkNTU2OWIy&amp;rmode=pad&amp;width=640&amp;rmode=pad&amp;width=640&amp;format=webp" type="image/webp"/>
<source srcset="/shop/media/L004D000_picture.PNG?context=bWFzdGVyfGltYWdlc3wzMDE3NTN8aW1hZ2UvcG5nfGgwMS9oMjcvODg0ODIyMDYxODc4Mi9MMDA0RDAwMF9waWN0dXJlLlBOR3wyZjRiZWE1NDU2MWU1MjUzMzU5MjAwNGVlYmIzY2MwNGQzODExMDI3NjNkMDE3YjQ4NGMwNjFlMGVkNTU2OWIy&amp;rmode=pad&amp;width=640&amp;rmode=pad&amp;width=640" type="image/jpeg"/>
<img alt="" class="card-img object-fit-contain is-contain" loading="lazy" src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7">
</img>
</picture>

我的代码如下:

for result in results:
    imgel = result.find("source", attrs = {'srcset' : True})['srcset']

该代码返回第一个srcset值,我想要获取第二个PNG格式的URL。

解决方法

方法1:通过find_all获取所有source标签后取第二个

find方法仅返回匹配到的第一个元素,改用find_all获取所有带srcset属性的source标签,再通过索引[1](索引从0开始)拿到第二个元素:

for result in results:
    sources = result.find_all("source", attrs={'srcset': True})
    if len(sources) >= 2:
        imgel = sources[1]['srcset']

添加长度判断可避免因标签数量不足导致索引错误。

方法2:根据type属性精准定位目标source

观察HTML结构,第二个source的type属性为image/jpeg,直接通过该属性筛选,无需依赖标签顺序:

for result in results:
    imgel = result.find("source", attrs={'type': 'image/jpeg'})['srcset']

这种方式更稳定,即使后续HTML中source标签顺序变化,只要type属性不变就能正确获取目标值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 20:20:20