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

如何从BeautifulSoup find_all结果提取img的src?能否直接获取该URL?

如何提取img标签的src属性并直接获取图片URL?

嘿,我来帮你搞定这个问题!针对你的需求,分两种场景给你实用的解决方案:

一、从已有的find_all(id="contents")结果中提取img的src

首先要注意,soup.find_all(id="contents")返回的是元素列表(哪怕id是唯一的,它也会以列表形式返回),所以我们需要先拿到对应的div元素,再从中定位img标签:

url = 'http://www.xxx'
html = urllib.request.urlopen(url).read()
soup = BeautifulSoup(html, 'html.parser')

# 用find更高效,因为id是唯一的,直接返回单个元素
contents_div = soup.find(id="contents")
if contents_div:
    # 在div里找到img标签
    img_tag = contents_div.find('img')
    if img_tag:
        # 获取src属性
        img_src = img_tag.get('src')
        print(img_src)  # 会输出:http://xxx/shop/data/editor/2020090302-01.jpg

如果一定要保留你原来的find_all写法,也可以这样处理列表:

s1 = soup.find_all(id="contents")
if s1:
    img_tag = s1[0].find('img')
    if img_tag:
        print(img_tag.get('src'))

二、不通过id="contents",直接获取图片URL

既然你的核心需求只是拿到这张图片的URL,完全可以跳过contents这个中间层,直接定位img标签,这里给你几种精准的方式:

方式1:直接取页面中的第一个img标签

如果页面里只有这一张图片,或者目标图片是页面的第一个img,直接这样写:

img_tag = soup.find('img')  # find默认返回第一个匹配的元素
if img_tag:
    print(img_tag.get('src'))

方式2:根据图片src的特征筛选

观察目标图片的src包含shop/data/editor/这个路径,可以用lambda表达式精准匹配:

target_img = soup.find('img', src=lambda x: x and 'shop/data/editor/' in x)
if target_img:
    print(target_img.get('src'))

方式3:根据父元素的样式特征定位

从你给出的HTML结构看,img在一个style="text-align:center;"的td标签里,我们可以先定位这个td,再找img:

center_td = soup.find('td', style='text-align:center;')
if center_td:
    img_tag = center_td.find('img')
    if img_tag:
        print(img_tag.get('src'))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 12:07:32