如何移除HTML标签提取文本?附示例代码与预期结果
移除HTML标签提取文本的实现方法
方法一:使用BeautifulSoup(推荐)
BeautifulSoup是专门处理HTML/XML的解析库,能应对各种复杂的HTML结构,解析结果更可靠。
- 先安装依赖库:
pip install beautifulsoup4
- 实现
get_text函数:
from bs4 import BeautifulSoup def get_text(text): # 解析HTML文本 soup = BeautifulSoup(text, 'html.parser') # 找到所有<option>标签 option_tags = soup.find_all('option') # 提取每个标签内的文本并去除首尾空白 return [tag.get_text(strip=True) for tag in option_tags]
- 测试调用:
text = """ <option value="tfa_4472" id="tfa_4472" class="">helo 1</option> <option value="tfa_4473" id="tfa_4473" class="">helo 2</option> <option value="tfa_4474" id="tfa_4474" class="">helo 3</option> <option value="tfa_4475" id="tfa_4475" class="">helo 4</option> <option value="tfa_4476" id="tfa_4476" class="">helo 5</option> """ my_list = get_text(text) for item in my_list: print(item)
运行后输出:
helo 1 helo 2 helo 3 helo 4 helo 5
方法二:使用正则表达式(适合简单场景)
如果你的HTML结构非常规整,没有嵌套标签或特殊格式,也可以用正则快速提取。但注意正则无法处理复杂HTML,容易出现匹配错误。
实现代码:
import re def get_text(text): # 匹配<option>标签内的内容,捕获组提取文本 regex_pattern = re.compile(r'<option[^>]*>(.*?)</option>', re.DOTALL) # 找出所有匹配项 raw_matches = regex_pattern.findall(text) # 清理每个匹配结果的空白字符 return [match.strip() for match in raw_matches]
调用后同样能得到目标输出。
内容的提问来源于stack exchange,提问作者Hoàng Tuyến
相关产品推荐
相关产品推荐

