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

Python中BeautifulSoup的find()传入元组未报错的原因咨询

为什么BeautifulSoup传入元组作为id参数能正常匹配?

你遇到的这个现象,本质是BeautifulSoup对find方法关键字参数的特殊处理逻辑:

当你给id=这类属性匹配参数传入非字符串的可迭代对象(比如元组、列表)时,BeautifulSoup不会报错,而是将其当作「属性值等于该可迭代对象中任意一个元素」的匹配条件。

在你的代码里:

tup = ('01', 'Revenue')
acc = soup.find(id=tup).text.strip().split('\n')

元组里的第一个元素'01'正好是目标元素的id,而页面中没有id为'Revenue'的元素,所以find最终匹配到了id='01'的元素,结果和直接传id='01'完全一致。

你预想的KeyError不会出现,是因为BeautifulSoup的参数校验逻辑允许传入可迭代对象,它会自动解析并执行多值匹配,而非强制要求必须传字符串。

如果你的页面里同时存在id='01'和id='Revenue'的元素,soup.find(id=tup)会返回页面中第一个出现的匹配元素,这时候结果就和单独传id='01'有区别了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 12:43:13