主页 > 互联网  > 

python爬虫报错信息解决方法

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'
验证步骤 ​安装后验证 python -c "import lxml; print('lxml版本:', lxml.__version__)" # 成功输出应显示版本号

如下图所示:

重新执行主程序: python /home/aistudio/work/main.py
技术原理说明 解析器安装需求速度容错性依赖项html.parserPython内置无需安装中一般无lxml需单独安装​快​​高​libxml2html5lib需单独安装慢极高html5lib

如果还是报错的话

可考虑以下优化:

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

python爬虫报错信息解决方法由讯客互联互联网栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“python爬虫报错信息解决方法

上一篇
1.C语言初识

下一篇
doris:HudiCatalog