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

如何使用BeautifulSoup查找包含多个特定文本td的tr元素?

解决方案:查找包含多个指定文本的所在

需求

查找同时包含文本10.13.18.150和StreaNetwork的<td>元素所在的<tr>数据。

示例HTML

<tr id="fr119" onclick="fr_toggle(119)" ondblclick="document.location='firewall_rules_edit.php?id=120';" class="ui-sortable-handle" style="">
<td>
    <input type="checkbox" id="frc119" onclick="fr_toggle(119)" name="rule[]" value="120">
</td>

    <td title="traffic is passed">
    <a href="?if=lan&amp;act=toggle&amp;id=120" usepost="">
        <i class="fa fa-check text-success" title="click to toggle enabled/disabled status"></i>
    </a>
    <i class="fa fa-cog" title="advanced setting: gateway PeakJioAirtel " style="cursor: pointer;"></i>                     
    </td>
    <td> 
    10.13.18.150                                                    
    </td>
    <td> 
    StreaNetwork                                                
    </td>
</tr>

原代码问题

你当前使用的代码里,BeautifulSoup原生的find方法不支持CSS选择器的:contains()和:has()语法,直接这么写会失效。

可行方案

方案一:原生遍历(无需额外依赖)

遍历所有<tr>,检查每个<tr>下的<td>文本是否同时包含两个目标值:

from bs4 import BeautifulSoup

html_data = """[此处填入你的HTML内容]"""

complete_soup = BeautifulSoup(html_data, 'html.parser')

target_tr = None
# 遍历所有tr元素
for tr in complete_soup.find_all('tr'):
    # 提取所有td的文本并去除多余空白
    td_texts = [td.get_text(strip=True) for td in tr.find_all('td')]
    # 验证是否同时包含两个目标文本
    if '10.13.18.150' in td_texts and 'StreaNetwork' in td_texts:
        target_tr = tr
        break

# 输出结果
if target_tr:
    print(target_tr.prettify())

方案二:使用高级CSS选择器(需额外安装库)

如果想用更简洁的CSS选择器写法,需要安装soupsieve库扩展BeautifulSoup的选择器能力:

  1. 先安装依赖:
pip install soupsieve
  1. 然后使用select_one方法匹配:
from bs4 import BeautifulSoup

complete_soup = BeautifulSoup(html_data, 'html.parser')
# 匹配同时包含两个指定td的tr
target_tr = complete_soup.select_one('tr:has(td:contains("10.13.18.150")):has(td:contains("StreaNetwork"))')

if target_tr:
    print(target_tr.prettify())

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 19:13:14