文章内容

2017/7/14 10:44:30,作 者: 黄兵

BeautifulSoup4 UserWarning

错误描述:

/opt/ActivePython-2.7/lib/python2.7/site-packages/bs4/__init__.py:166: UserWarning: No parser was explicitly specified, so I'm using the best available HTML parser for this system ("lxml"). 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.

注释:没有明确指定解析器,在这个系统最好采用HTML解析器(“lxml”),这通常不是一个问题,但是如果您在另一个系统或其他虚拟环境中运行此代码,则可能会使用不同的解析器并以不同的方式运行。

To get rid of this warning, change this:
注释:如果要消除这个警告,可以这样做:
 BeautifulSoup([your markup])

to this:

 BeautifulSoup([your markup], "lxml")

  markup_type=markup_type))

解决:

初始化时,加上解析器类型,常用解析器如下:

解析器使用方法优势劣势
Python标准库BeautifulSoup(markup, "html.parser")
  • Python的内置标准库
  • 执行速度适中
  • 文档容错能力强
  • Python 2.7.3 or 3.2.2)前 的版本中文档容错能力差
lxml HTML 解析器BeautifulSoup(markup, "lxml")
  • 速度快
  • 文档容错能力强
  • 需要安装C语言库
lxml XML 解析器

BeautifulSoup(markup, ["lxml", "xml"])

BeautifulSoup(markup, "xml")

  • 速度快
  • 唯一支持XML的解析器
  • 需要安装C语言库
html5libBeautifulSoup(markup, "html5lib")
  • 最好的容错性
  • 以浏览器的方式解析文档
  • 生成HTML5格式的文档
  • 速度慢
  • 不依赖外部扩展

也就是说上面没有指定解析器,不同的系统有可能采用不同的解析器(或者是不同的运行方式)。

这只是一个警告(Warning),可以忽略。

参考文章:csdn - ace_fei的专栏 - BeautifulSoup4 UserWarning

分享到:

发表评论

评论列表