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

使用BeautifulSoup查找含指定文本的td标签匹配不全如何解决

问题原因

你原写法中find_all的text参数传入的回调函数,接收的是td标签下每一个独立的直接子文本节点,而非整个td标签的全部拼接文本。第一个td标签内含<a>子标签,"keyword"仅存在于第一个直接子文本片段中,原有判断逻辑无法将该td整体判定为匹配,只有无其他子标签、全部为纯文本的td会被正确匹配。

解决方法

有两种常用实现方式,都可以拿到预期的两个匹配td:

方法1:遍历td后判断完整文本

先取出所有td标签,再通过get_text()方法获取td的全部拼接文本做判断:

soup = BeautifulSoup(html, 'lxml')
ans = [td for td in soup.find_all('td') if 'keyword' in td.get_text()]
print(ans)

方法2:使用CSS选择器

直接用bs4支持的:contains伪类选择器,一行代码即可完成筛选:

soup = BeautifulSoup(html, 'lxml')
ans = soup.select('td:contains("keyword")')
print(ans)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 07:18:04