You need to enable JavaScript to run this app. 使用BeautifulSoup提取指定div下全部p标签仅返回首个的问题咨询
优惠活动
大模型
产品
解决方案
定价
更多

使用BeautifulSoup提取指定div下全部p标签仅返回首个的问题咨询

问题排查方向与解决方案

1. 优先验证原始HTML完整性

首先打印你用来构造BeautifulSoup对象的原始HTML字符串,检索字符串中是否包含你预期的后续<p>标签内容:

# 假设你的原始HTML存在变量html_raw中
print("后续p标签文本是否存在:" , "Ratios (Q3FY21)" in html_raw)

如果返回False,说明你发起请求时就没有拿到完整的页面内容,大概率是目标内容属于前端JavaScript动态渲染的部分,静态请求无法获取,需要改用Selenium、Playwright或requests-html等支持动态渲染的工具获取完整页面。

2. 更换HTML解析器

如果原始HTML中确实存在后续p标签内容,问题出在BeautifulSoup的解析器对不规范HTML的兼容不足:默认的html.parser容错性较低,遇到未闭合标签、格式错误的HTML时会直接截断后续内容。
执行以下命令安装兼容性更高的解析器:

pip install lxml html5lib

构造soup时指定解析器即可:

from bs4 import BeautifulSoup
# 优先用lxml,速度快容错性高
soup = BeautifulSoup(html_raw, 'lxml')
# 若lxml仍有问题,改用html5lib,完全模拟浏览器解析行为,容错性最高
# soup = BeautifulSoup(html_raw, 'html5lib')

3. 验证目标div的实际解析结果

你可以打印id=commentary的div的完整内部HTML,确认解析后的内容是否符合预期:

print(points.encode_contents().decode('utf-8'))

如果打印结果中仅包含1个p标签,就可以确认是解析器的问题,更换解析器即可解决。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.20 02:36:04