python爬虫报错信息解决方法

news/2025/3/5 2:05:24/

 今天遇到了这样一条报错:

opt/conda/envs/python35-paddle120-env/bin/python /home/aistudio/work/main.py aistudio@jupyter-10415006-8838159:~$ /opt/conda/envs/python35-paddle120-env/bin/python /home/aistudio/work/main.py Traceback (most recent call last): File "/home/aistudio/work/main.py", line 43, in <module> spider.run() File "/home/aistudio/work/main.py", line 30, in run books = DataParser.parse_book_page(html) File "/home/aistudio/work/parser.py", line 9, in parse_book_page soup = BeautifulSoup(html, 'lxml') File "/opt/conda/envs/python35-paddle120-env/lib/python3.10/site-packages/bs4/__init__.py", line 364, in __init__ raise FeatureNotFound( bs4.exceptions.FeatureNotFound: Couldn't find a tree builder with the features you requested: lxml. Do you need to install a parser library? aistudio@jupyter-10415006-8838159:~$  

错误原因分析

该错误表明BeautifulSoup无法找到lxml解析器。当代码中使用以下语句时:

python">soup = BeautifulSoup(html, 'lxml')

需要系统中已安装lxml库,而当前环境中缺少该依赖项。(是的我忘记装了)


解决方案(任选其一)

方案一:安装lxml库(推荐)
python"># 进入当前Python环境
source activate python35-paddle120-env# 安装lxml(选择以下任意一种方式)
pip install lxml         # 使用pip安装
conda install lxml       # 使用conda安装
方案二:修改解析器类型(这是我看到的第二种方法,试了以下感觉没第一种好)

将代码中的lxml替换为Python内置的html.parser

python"># 修改parser.py文件
soup = BeautifulSoup(html, 'html.parser')  # 替换原代码中的'lxml'

验证步骤

  1. 安装后验证
python">python -c "import lxml; print('lxml版本:', lxml.__version__)"
# 成功输出应显示版本号

如下图所示:

  1. 重新执行主程序:
python">python /home/aistudio/work/main.py

技术原理说明

解析器安装需求速度容错性依赖项
html.parserPython内置无需安装一般
lxml需单独安装libxml2
html5lib需单独安装极高html5lib

如果还是报错的话

可考虑以下优化:

  1. 创建纯净虚拟环境
    python">conda create -n crawler_env python=3.8
    conda activate crawler_env
    pip install requests beautifulsoup4 lxml
  2. 使用Docker容器化部署
    python">FROM python:3.8-slim
    RUN pip install requests beautifulsoup4 lxml
    COPY . /app
    WORKDIR /app
    CMD ["python", "main.py"]

http://www.ppmy.cn/news/1576148.html

相关文章

Python办公自动化教程(007):利用python写入excel文件

文章目录 示例代码实现效果代码解释基本设置 示例代码 import openpyxl# 创建一个 Excel 工作簿 wb openpyxl.Workbook() sheet wb.active sheet.title "球员信息"# 写入数据 sheet["A1"] "球员" sheet["B1"] "球队" …

服务器间迁移conda环境

注意&#xff1a;可使用迁移miniconda文件 or 迁移yaml文件两种方式&#xff0c;推荐前者&#xff0c;基本无bug&#xff01; 一、迁移miniconda文件&#xff1a; 拷贝旧机器的miniconda文件文件到新机器: 内网拷贝&#xff1a;scp -r mazhf192.168.1.233:~/miniconda3 ~/ 外…

三七互娱,蓝禾,顺丰,oppo,游卡,汤臣倍健,康冠科技,作业帮,高途教育25届春招内推

三七互娱&#xff0c;蓝禾&#xff0c;顺丰&#xff0c;oppo&#xff0c;游卡&#xff0c;汤臣倍健&#xff0c;康冠科技&#xff0c;作业帮&#xff0c;高途教育25届春招内推 ①康冠科技 【职位】算法、软件、硬件、技术&#xff0c;结构设计&#xff0c;供应链&#xff0c;…

Ubuntu 20.04配置网络

1&#xff0c;检查自己网络是否配通。 网络配置成功显示的网络图标 不成功的网络图标 如果看不见网络图标&#xff0c;可以使用ping命令。连接一下百度网。 ping www.baidu.com ping失败的样子 ping成功的样子 2&#xff0c;接下来进入正题&#xff0c;我们开始配置网络。 这…

鸿蒙5.0实战案例:基于RichEditor的评论编辑

往期推文全新看点&#xff08;文中附带全新鸿蒙5.0全栈学习笔录&#xff09; ✏️ 鸿蒙&#xff08;HarmonyOS&#xff09;北向开发知识点记录~ ✏️ 鸿蒙&#xff08;OpenHarmony&#xff09;南向开发保姆级知识点汇总~ ✏️ 鸿蒙应用开发与鸿蒙系统开发哪个更有前景&#…

51c自动驾驶~合集52

我自己的原文哦~ https://blog.51cto.com/whaosoft/13383340 #世界模型如何推演未来的千万种可能 驾驶世界模型&#xff08;DWM&#xff09;&#xff0c;专注于预测驾驶过程中的场景演变&#xff0c;已经成为追求自动驾驶的一种有前景的范式。这些方法使自动驾驶系统能够更…

IP段转CIDR:原理Java实现

&#x1f9d1; 博主简介&#xff1a;CSDN博客专家&#xff0c;历代文学网&#xff08;PC端可以访问&#xff1a;https://literature.sinhy.com/#/?__c1000&#xff0c;移动端可微信小程序搜索“历代文学”&#xff09;总架构师&#xff0c;15年工作经验&#xff0c;精通Java编…

【计算机网络】常见tcp/udp对应的应用层协议,端口

TCP 和 UDP 对应的常见应用层协议 &#x1f4cc; 基于 TCP 的应用层协议 协议全称用途默认端口HTTPHyperText Transfer Protocol超文本传输协议80HTTPSHTTP Secure加密的超文本传输协议443FTPFile Transfer Protocol文件传输协议&#xff08;20 传输数据&#xff0c;21 控制连…