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

如何用BeautifulSoup查找并按顺序打印Open/Closed精确匹配文本

如何用BeautifulSoup同时抓取精确匹配的"Open"和"Closed"文本?

嘿,我来帮你调整这段代码!你当前的lambda表达式只筛选了包含"Open"的文本,要同时精确匹配"Open"和"Closed"的话,只需要修改判断逻辑就行啦。

首先,咱们要明确是精确匹配——也就是只抓取完全等于"Open"或"Closed"的文本(如果文本前后可能有空格、换行符,记得先做去除空白的处理,避免漏匹配)。修改后的代码如下:

# 基于你已有的soup对象
for node in soup.find_all(text=lambda x: x and x.strip() in {"Open", "Closed"}):
    print(node.strip())  # 打印时也去除空白,输出更整洁

小细节解释:

  • 用x.strip()是为了处理文本前后可能存在的空格、制表符或换行符,比如" Closed "这种情况也能被正确识别
  • 用集合{"Open", "Closed"}来做判断,比写x.strip() == "Open" or x.strip() == "Closed"更简洁高效,后续要加其他关键词也更方便
  • 开头的x and ...是为了过滤掉空文本节点,避免报错

如果你确定目标文本绝对没有多余空白,也可以简化成这样:

for node in soup.find_all(text=lambda x: x in ("Open", "Closed")):
    print(node)

这样就能按发现顺序把所有精确匹配的"Open"和"Closed"打印到控制台啦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 09:45:04