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

使用Python(BeautifulSoup)去除HTML标签时find_all('p')后无法调用get_text()问题

BeautifulSoup提取p标签文本解决方案

问题根源

find_all('p')返回的是包含所有匹配<p>标签的Tag对象列表,get_text()是单个Tag对象专属的方法,无法直接作用于列表,所以会调用失败。

实现方案

前提补正

你给出的示例代码漏了requests库导入,调用前需要先补充导入语句:import requests

方案1:遍历输出每个p标签的文本

from bs4 import BeautifulSoup
import requests

url = "https://www.example.com/"
result = requests.get(url)
soup = BeautifulSoup(result.text, "html.parser")
target_div = soup.find('div', attrs={"class":"class_name"})
# 先判断div是否存在,避免空值调用报错
if target_div:
    p_tag_list = target_div.find_all('p')
    for p_tag in p_tag_list:
        # 单个p标签调用get_text提取纯文本
        print(p_tag.get_text(strip=True))
else:
    print("未找到匹配class属性的div节点")

方案2:合并所有p标签文本为单个字符串输出

如果你需要把所有p标签的文本拼接成完整内容,可以直接用列表推导式批量提取后拼接:

if target_div:
    full_text = '\n'.join([p.get_text(strip=True) for p in target_div.find_all('p')])
    print(full_text)

小提示:get_text()的strip=True参数可以自动去除文本前后的换行、空格等空白字符,输出结果更整洁。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 21:27:05