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

如何使用BeautifulSoup提取HTML中首个带src属性的tr标签

问题原因

你调用find()时没有限定标签类型,BeautifulSoup会按文档顺序遍历所有节点,返回第一个符合src属性匹配规则的节点。内层<source>节点在DOM树中位于<tr>内部,检索顺序更靠前,因此被优先返回。

解决方法

方案1:明确指定查找<tr>标签(推荐)

直接在find()的第一个参数传入要匹配的标签名,就能精准定位到外层的tr节点:

import re
from bs4 import BeautifulSoup

soup = BeautifulSoup(target, 'lxml')
target_tr = soup.find('tr', src=re.compile(r'\.\w'))
print(target_tr)

如果只需要输出tr的起始标签(不需要子内容和闭合标签),可以再加一步格式处理:

print(str(target_tr).split('>')[0] + '>')

方案2:过滤查找结果(仅作参考)

如果不确定目标标签名,也可以先查找所有带符合规则src属性的标签,再筛选父层级最高的节点:

all_match = soup.find_all(src=re.compile(r'\.\w'))
# 取父层级最少的节点即为最外层匹配节点
target_tr = sorted(all_match, key=lambda x: len(list(x.parents)))[0]
print(target_tr)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 23:24:05