当前位置: 首页 > article >正文

python爬虫报错信息解决方法

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

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解析器。当代码中使用以下语句时:

soup = BeautifulSoup(html, 'lxml')

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


解决方案(任选其一)

方案一:安装lxml库(推荐)
# 进入当前Python环境
source activate python35-paddle120-env

# 安装lxml(选择以下任意一种方式)
pip install lxml         # 使用pip安装
conda install lxml       # 使用conda安装
方案二:修改解析器类型(这是我看到的第二种方法,试了以下感觉没第一种好)

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

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

验证步骤

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

如下图所示:

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

技术原理说明

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

如果还是报错的话

可考虑以下优化:

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

http://www.kler.cn/a/570970.html

相关文章:

  • 02原理篇(D2_SpringBoot 自动装配原理)
  • 设计模式:记录所有设计模式方便后续复习
  • 3.1、密码学基础
  • PGlite:浏览器中运行的PostgreSQL
  • 【大模型】大模型分类
  • Teacher Forcing
  • 【Linux探索学习】第三十弹——线程互斥与同步(上):深入理解线程保证安全的机制
  • k8s架构及服务详解
  • Unity 对象池技术
  • Python 网络爬虫的应用
  • java后端开发day26--常用API(一)
  • Arduino引脚说明
  • DDK:Distilling Domain Knowledge for Efficient Large Language Models
  • AI大模型与区块链技术的结合
  • Rocky Linux 系统安装 typecho 个人博客系统(Docker 方式)
  • 通俗易懂的分类算法之朴素贝叶斯详解
  • Baklib云内容中台的核心架构是什么?
  • 【杂谈杂说】无人机行业相关国家标准及新产业应用
  • redis 与 DB 的一致性 7 种策略
  • 【华为OD机试真题29.9¥】(E卷,100分) - We Are A Team(Java Python JS C++ C )