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

使用Beautiful Soup提取多层div嵌套下h4标签内容返回空列表如何解决

问题原因排查
  • 首先可以排除h4嵌套在多层div内的影响:BeautifulSoup的DOM查找逻辑是遍历整个文档树的,标签嵌套深度不会导致查找失效。
  • 你代码返回空列表的核心原因是class属性的多值匹配规则不匹配:HTML中class支持同时设置多个类名,BeautifulSoup默认会把class属性值拆分为列表处理,你在attrs中直接传入'pr-3 mb-3'这个带空格的字符串时,会被当成单个类名做完全匹配,和实际拆分后的两个独立类名pr-3、mb-3匹配不上,最终查找失败。
最简提取代码

因为id属性在HTML页面中是全局唯一的,你完全不需要叠加class条件做过滤,直接按id查找即可,代码如下:

# 直接按唯一id查找对应标签
rfq_tag = soup.find(name='h4', id='rfq-info-header-id')
# 提取内容前先做非空判断,避免标签不存在时报错
if rfq_tag:
    rfq_id = rfq_tag.text.strip()
    print(rfq_id)

运行后会直接输出目标值 RFQ1526090。

原有代码修复方案

如果你确实需要同时匹配id和class做过滤,有两种修复方式:

  1. 将class的匹配值改为列表形式,对应拆分后的多个类名:
rfq_id = [tag.text.strip() for tag in soup.find_all(name='h4', attrs={'id': 'rfq-info-header-id','class': ['pr-3', 'mb-3']})]
  1. 使用BeautifulSoup内置的class_参数,支持直接传入空格分隔的多类名字符串:
rfq_id = [tag.text.strip() for tag in soup.find_all(name='h4', id='rfq-info-header-id', class_='pr-3 mb-3')]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 04:48:01