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

如何使用Beautiful Soup获取标签内的所有属性?

获取BeautifulSoup标签内子元素的属性

场景与需求

用户现有如下HTML结构:

<div class="parentclass">
  <img alt="puppydog" class="" src="https://google.com/puppydawgimage.png" title="puppy dog" />
</div>

以及对应的Python解析代码:

from bs4 import BeautifulSoup  

html = BeautifulSoup(html, "html.parser") 

stuff = html.find_all("div", class_="parentclass") 

parentclassstuff = [] 

for x in stuff: 
    # 收集符合条件的div标签
    parentclassstuff.append(x) 

print(parentclassstuff[0]) 
'''输出:
<div class="parentclass">
<img alt="puppydog" class="" src="https://google.com/puppydawgimage.png" title="puppy dog"/></div>''' 

用户已获取到parentclassstuff[0](类型为bs4.element.Tag),希望直接获取其内部img标签的alt、src等属性,拒绝通过字符串截取的方式,需要利用Beautiful Soup的原生方法实现。

解决方案

核心思路是先从目标div标签中定位到内部的img标签,再通过Beautiful Soup的属性访问方法获取对应值:

1. 定位内部img标签

由于目标div内只有一个img标签,可使用.find()或.select_one()快速定位:

# 从parentclassstuff[0]中获取img标签
img_tag = parentclassstuff[0].find('img')
# 或者用CSS选择器方式
# img_tag = parentclassstuff[0].select_one('img')

2. 获取单个属性

  • 直接通过字典键访问(属性不存在时会抛出KeyError):
    alt_text = img_tag['alt']
    src_url = img_tag['src']
    title_text = img_tag['title']
    
  • 用.get()方法安全获取(属性不存在时返回None或指定默认值):
    alt_text = img_tag.get('alt')
    # 带默认值的写法
    class_attr = img_tag.get('class', '无class属性')
    

3. 获取所有属性

如果需要一次性获取img标签的所有属性,可访问.attrs属性,它会返回一个包含所有属性键值对的字典:

all_img_attrs = img_tag.attrs
# 输出示例:{'alt': 'puppydog', 'class': '', 'src': 'https://google.com/puppydawgimage.png', 'title': 'puppy dog'}

完整改进代码示例

from bs4 import BeautifulSoup  

# 修正原代码变量名冲突,将原始HTML字符串命名为raw_html
raw_html = '''
<div class="parentclass">
  <img alt="puppydog" class="" src="https://google.com/puppydawgimage.png" title="puppy dog" />
</div>
'''

soup = BeautifulSoup(raw_html, "html.parser") 
# 直接获取第一个符合条件的div,无需循环收集
parent_div = soup.find("div", class_="parentclass")

if parent_div:
    img_tag = parent_div.find('img')
    if img_tag:
        # 获取单个属性
        print("alt属性值:", img_tag['alt'])
        print("src属性值:", img_tag.get('src'))
        # 获取所有属性
        print("所有属性:", img_tag.attrs)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 00:25:28