使用BeautifulSoup指定lxml解析器报features多值错误如何解决?
问题修复方案
报错原因
该报错核心是BeautifulSoup构造函数收到了两份features参数的赋值,常见触发场景有两种:
- 导入方式错误,混用了BeautifulSoup3和BeautifulSoup4的导入逻辑
- 构造函数位置参数匹配混乱,或存在重复的
features关键字参数声明
你仅传page.text可运行但解析异常,是因为未指定解析器时,BeautifulSoup会自动选择当前环境可用的解析器,大概率匹配到非HTML解析器或解析能力不全的内置解析器,导致解析结果不符合预期。
修复步骤
- 首先确认导入语句使用BeautifulSoup4的标准写法:
from bs4 import BeautifulSoup
不要使用旧版本的from BeautifulSoup import BeautifulSoup导入逻辑。
- 显式用关键字参数指定解析器,避免位置参数匹配冲突,修改解析代码为:
soup = BeautifulSoup(page.text, features='lxml')
- 如果修改后提示缺少lxml依赖,执行以下命令安装:
pip install lxml
- 若上述操作后仍报错,检查你的代码中是否存在自定义的同名变量/类
BeautifulSoup,覆盖了官方导入的类,修改自定义变量名即可解决。
内容的提问来源于stack exchange,提问作者Shovo Murad
相关产品推荐
相关产品推荐

