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

如何用BeautifulSoup提取以m结尾的首个加粗(strong)文本?

解决方法:用BeautifulSoup提取以"m"结尾的首个加粗文本

当然可以搞定这个问题!之前的方法因为页面结构变化失效太正常了,我们只需要调整筛选逻辑,精准定位到以"m"结尾的加粗文本就行,给你两种实用的实现方式:

方法一:遍历筛选所有<strong>标签

这种方式逻辑清晰,适合新手理解,逐个检查每个加粗文本,找到第一个符合条件的就停止:

from bs4 import BeautifulSoup

# 假设你的HTML内容已经存在html变量中(比如通过requests获取的页面源码)
soup = BeautifulSoup(html, 'html.parser')

water_level = None
# 遍历所有strong标签
for strong in soup.find_all('strong'):
    # 提取标签文本并去除前后空白
    text = strong.get_text(strip=True)
    # 判断文本是否以"m"结尾
    if text.endswith('m'):
        water_level = text
        break  # 找到第一个就停止遍历,提升效率

if water_level:
    print(f"成功提取水位:{water_level}")
else:
    print("未找到符合条件的水位信息")

方法二:用find()结合自定义判断(更简洁)

BeautifulSoup的find()方法支持传入自定义判断函数,一行逻辑就能定位目标标签:

from bs4 import BeautifulSoup

soup = BeautifulSoup(html, 'html.parser')

# 找到第一个文本以"m"结尾的strong标签
target_tag = soup.find('strong', lambda tag: tag.get_text(strip=True).endswith('m'))

if target_tag:
    water_level = target_tag.get_text(strip=True)
    print(f"成功提取水位:{water_level}")
else:
    print("未找到符合条件的水位信息")

额外优化建议

如果页面里有其他以"m"结尾的非水位文本(比如某些无关的单位标注),可以进一步强化判断条件,比如要求文本包含数字(水位一般是数值+米,例如15.7m):

# 修改判断逻辑,同时满足以m结尾且包含数字
if text.endswith('m') and any(char.isdigit() for char in text):

这样就能更精准地定位到水位信息啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 15:07:40