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

如何使用BeautifulSoup提取指定HTML片段中的目标文本?

当然有可行的解决方法啦!针对你给出的HTML片段,我整理了几种不同场景下的提取方案,你可以根据自己的使用环境来选:

方法一:Python + BeautifulSoup(后端处理首选)

BeautifulSoup是Python里专门解析HTML/XML的工具,对付这种结构化标签非常靠谱,不会像正则那样容易因为HTML小改动就失效。

步骤很简单:

  • 先安装依赖:pip install beautifulsoup4
  • 然后用下面的代码提取:
from bs4 import BeautifulSoup

# 你的HTML片段
html_content = '''<span class="cw-type__h2 Ingredients-title">Ingredients</span> <p> THIS IS THE TEXT I WANT TO EXTRACT</p>'''

# 初始化解析器
soup = BeautifulSoup(html_content, 'html.parser')

# 定位p标签并提取文本,strip()用来去掉前后的空格
target_text = soup.find('p').get_text(strip=True)
print(target_text)  # 输出结果就是你要的文本

如果页面里有多个p标签,还可以结合上下文精准定位,比如先找到那个带有Ingredients-title类的span,再取它的下一个兄弟元素:

ingredients_span = soup.find('span', class_='Ingredients-title')
target_p = ingredients_span.find_next_sibling('p')
target_text = target_p.get_text(strip=True)
方法二:正则表达式(适合简单固定场景)

如果你的HTML结构绝对固定,不会有变化,用正则也能快速搞定,但要注意:一旦HTML结构变了(比如p标签加了属性、换行),正则可能就失效了,所以只推荐简单场景用。

示例代码:

import re

html_content = '''<span class="cw-type__h2 Ingredients-title">Ingredients</span> <p> THIS IS THE TEXT I WANT TO EXTRACT</p>'''

# 匹配<p>和</p>之间的内容,\s*匹配前后空格,.*?是非贪婪匹配
match_result = re.search(r'<p>\s*(.*?)\s*</p>', html_content)
if match_result:
    target_text = match_result.group(1)
    print(target_text)
方法三:前端JavaScript(浏览器环境)

如果是在网页里直接用JS提取文本,也很方便:

// 直接获取p标签的文本,trim()去掉前后空格
const targetText = document.querySelector('p').textContent.trim();
console.log(targetText);

要是需要更精准(比如页面有多个p标签),可以先定位到Ingredients的标题span,再取它的下一个兄弟元素:

const ingredientsTitle = document.querySelector('.Ingredients-title');
const targetP = ingredientsTitle.nextElementSibling;
const targetText = targetP.textContent.trim();
console.log(targetText);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:18:54