安装beautifulsoup后,运行测试报错
from urllib import request
from bs4 import BeautifulSoup
url = "http://www.baidu.com"
rsp = request.urlopen(url)
content = rsp.read()
soup = BeautifulSoup(content, "lxml")
print(soup.title.string)
运行结果:
----------------------------------------------------------------------
FeatureNotFound Traceback (most recent call last)
~/data/spider/bs.py in <module>
16 content = rsp.read()
17
---> 18 soup = BeautifulSoup(content, "lxml")
19
20 print(soup.title.string)
~/data/spider/venv/lib/python3.7/site-packages/bs4/__init__.py in __init__(self, markup, features, builder, parse_only, from_encoding, exclude_encodings, **kwargs)
196 "Couldn't find a tree builder with the features you "
197 "requested: %s. Do you need to install a parser library?"
--> 198 % ",".join(features))
199 builder = builder_class()
200 if not (original_features == builder.NAME or
FeatureNotFound: Couldn't find a tree builder with the features you requested: lxml. Do you need to install a parser library?
经过测试发现是lxml的问题,使用 pip install lxml 安装,安装完后,在运行还是一样出错, 经百度、知乎的说法是新的库不支持,新版本语法支持改变了
使用 pip install lxml时,自动安装的是最新 4.2.5版本
解决方法一:
卸载新的换老的就可以了
pip uninstall lxml
pip install lxml==3.7.0
方法二:
在报错代码中把函数参数中所有的 "lxml" 改成 "html.parser"
soup = BeautifulSoup(content, "lxml")
改成
soup = BeautifulSoup(content, "html.parser")