找出 BeautifulSoup4 使用的是哪个解析器?

Find out which parser BeautifulSoup4 is using?

我使用 beautifulsoup4 编写了一个脚本,该脚本在一台机器上有效,但在另一台机器上无效。原因是在另一台机器上,BeautifulSoup() 构造函数自动将 <br> 转换为 <br/> 而这不是我机器上的行为。信不信由你,这对我的剧本很重要。

我认为这两台机器可能使用了 2 个不同的底层 HTML 解析器。我怎样才能知道他们使用的是什么解析器?我知道我可以指定一个解析器库供 BeautifulSoup 使用,但首先我需要知道要统一到哪个库。

两台机器运行python2.7.6

我认为这没有记录,但如果您查看 the source,根据您的 builder and/or [=] 选择的 class 的实例11=] 个参数存储在 builder 属性中。

所以,您可能需要 type(soup.builder).__name__,这会给您以下之一:

  • HTMLParserTreeBuilder:使用html.parser
  • LXMLTreeBuilder:使用lxml
  • LXMLTreeBuilderForXML:使用xml
  • HTML5TreeBuilder:使用html5lib

(当然,这是假设您没有围绕其他解析器编写自己的自定义构建器,但如果您这样做了,希望您会知道。:)