如何摆脱 BeautifulSoup 用户警告?
How to get rid of BeautifulSoup user warning?
我安装BeautifulSoup后,每当我在cmd中运行我的Python时,就会出现这个警告。
D:\Application\python\lib\site-packages\beautifulsoup4-4.4.1-py3.4.egg\bs4\__init__.py:166:
UserWarning: No parser was explicitly specified, so I'm using the best
available HTML parser for this system ("html.parser"). This usually isn't a
problem, but if you run this code on another system, or in a different
virtual environment, it may use a different parser and behave differently.
To get rid of this warning, change this:
BeautifulSoup([your markup])
to this:
BeautifulSoup([your markup], "html.parser")
为什么会出来,怎么解决,我也没有理想
您的问题的解决方案在错误信息中有明确说明。像下面这样的代码没有指定 XML/HTML/etc。解析器。
BeautifulSoup( ... )
为了修复错误,您需要指定要使用的解析器,如下所示:
BeautifulSoup( ..., "html.parser" )
如果愿意,您还可以安装第 3 方解析器。
文档建议您安装和使用 lxml 以提高速度。
BeautifulSoup(html, "lxml")
If you’re using a version of Python 2 earlier than 2.7.3, or a version
of Python 3 earlier than 3.2.2, it’s essential that you install lxml
or html5lib–Python’s built-in HTML parser is just not very good in
older versions.
正在安装 LXML 解析器
在 Ubuntu (debian)
apt-get install python-lxml
Fedora(基于 RHEL)
dnf install python-lxml
使用画中画
pip install lxml
对于HTML解析器,需要安装html5lib,运行:
pip install html5lib
然后在BeautifulSoup方法中添加html5lib:
htmlDoc = bs4.BeautifulSoup(req1.text, 'html5lib')
print(htmlDoc)
我认为前面的post没有回答问题。
是的,正如大家所说,您可以通过指定解析器来消除警告。
正如文档所指出的,这是性能的最佳实践 1 and for consistency 2.
但在某些情况下,您想使警告静音...因此 post。
- 因为 BeautifulSoup 4 rev 460, the warning message does not appear in interactive (REPL) 模式
- 在以下位置有更多通才答案:How to disable python warnings to control Python warnings (TL;DL:
PYTHONWARNINGS=ignore
or -Wignore
)
- 通过添加到您的代码中来显式抑制警告 (bs4 ≥ rev 569):
import warnings
warnings.filterwarnings('ignore', category=GuessedAtParserWarning)
- 通过让 bs4 认为您提供了解析器来作弊,即:
bs4.BeautifulSoup(
your_markup,
builder=bs4.builder_registry.lookup(*bs4.BeautifulSoup.DEFAULT_BUILDER_FEATURES)
)
我安装BeautifulSoup后,每当我在cmd中运行我的Python时,就会出现这个警告。
D:\Application\python\lib\site-packages\beautifulsoup4-4.4.1-py3.4.egg\bs4\__init__.py:166:
UserWarning: No parser was explicitly specified, so I'm using the best
available HTML parser for this system ("html.parser"). This usually isn't a
problem, but if you run this code on another system, or in a different
virtual environment, it may use a different parser and behave differently.
To get rid of this warning, change this:
BeautifulSoup([your markup])
to this:
BeautifulSoup([your markup], "html.parser")
为什么会出来,怎么解决,我也没有理想
您的问题的解决方案在错误信息中有明确说明。像下面这样的代码没有指定 XML/HTML/etc。解析器。
BeautifulSoup( ... )
为了修复错误,您需要指定要使用的解析器,如下所示:
BeautifulSoup( ..., "html.parser" )
如果愿意,您还可以安装第 3 方解析器。
文档建议您安装和使用 lxml 以提高速度。
BeautifulSoup(html, "lxml")
If you’re using a version of Python 2 earlier than 2.7.3, or a version of Python 3 earlier than 3.2.2, it’s essential that you install lxml or html5lib–Python’s built-in HTML parser is just not very good in older versions.
正在安装 LXML 解析器
在 Ubuntu (debian)
apt-get install python-lxml
Fedora(基于 RHEL)
dnf install python-lxml
使用画中画
pip install lxml
对于HTML解析器,需要安装html5lib,运行:
pip install html5lib
然后在BeautifulSoup方法中添加html5lib:
htmlDoc = bs4.BeautifulSoup(req1.text, 'html5lib')
print(htmlDoc)
我认为前面的post没有回答问题。
是的,正如大家所说,您可以通过指定解析器来消除警告。
正如文档所指出的,这是性能的最佳实践 1 and for consistency 2.
但在某些情况下,您想使警告静音...因此 post。
- 因为 BeautifulSoup 4 rev 460, the warning message does not appear in interactive (REPL) 模式
- 在以下位置有更多通才答案:How to disable python warnings to control Python warnings (TL;DL:
PYTHONWARNINGS=ignore
or-Wignore
) - 通过添加到您的代码中来显式抑制警告 (bs4 ≥ rev 569):
import warnings warnings.filterwarnings('ignore', category=GuessedAtParserWarning)
- 通过让 bs4 认为您提供了解析器来作弊,即:
bs4.BeautifulSoup( your_markup, builder=bs4.builder_registry.lookup(*bs4.BeautifulSoup.DEFAULT_BUILDER_FEATURES) )